Class KHRExternalSemaphoreFd

  • public class KHRExternalSemaphoreFd
    extends java.lang.Object
    An application using external memory may wish to synchronize access to that memory using semaphores. This extension enables an application to export semaphore payload to and import semaphore payload from POSIX file descriptors.
    Name String
    Extension Type
    Device extension
    Registered Extension Number
    Extension and Version Dependencies
    Last Modified Date
    IP Status
    No known IP claims.
    • Jesse Hall, Google
    • James Jones, NVIDIA
    • Jeff Juliano, NVIDIA
    • Carsten Rohde, NVIDIA
    • Method Detail

      • nvkImportSemaphoreFdKHR

        public static int nvkImportSemaphoreFdKHR​(VkDevice device,
                                                  long pImportSemaphoreFdInfo)
        Unsafe version of: ImportSemaphoreFdKHR
      • vkImportSemaphoreFdKHR

        public static int vkImportSemaphoreFdKHR​(VkDevice device,
                                                 VkImportSemaphoreFdInfoKHR pImportSemaphoreFdInfo)
        Import a semaphore from a POSIX file descriptor.
        C Specification

        To import a semaphore payload from a POSIX file descriptor, call:

         VkResult vkImportSemaphoreFdKHR(
             VkDevice                                    device,
             const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo);

        Importing a semaphore payload from a file descriptor transfers ownership of the file descriptor from the application to the Vulkan implementation. The application must not perform any operations on the file descriptor after a successful import.

        Applications can import the same semaphore payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance.

        Valid Usage
        • semaphore must not be associated with any queue command that has not yet completed execution on that queue
        Valid Usage (Implicit)
        • device must be a valid VkDevice handle
        • pImportSemaphoreFdInfo must be a valid pointer to a valid VkImportSemaphoreFdInfoKHR structure
        Return Codes
        On success, this command returns
        On failure, this command returns
        See Also


        device - the logical device that created the semaphore.
        pImportSemaphoreFdInfo - points to a VkImportSemaphoreFdInfoKHR structure specifying the semaphore and import parameters.
      • nvkGetSemaphoreFdKHR

        public static int nvkGetSemaphoreFdKHR​(VkDevice device,
                                               long pGetFdInfo,
                                               long pFd)
        Unsafe version of: GetSemaphoreFdKHR
      • vkGetSemaphoreFdKHR

        public static int vkGetSemaphoreFdKHR​(VkDevice device,
                                              VkSemaphoreGetFdInfoKHR pGetFdInfo,
                                              java.nio.IntBuffer pFd)
        Get a POSIX file descriptor handle for a semaphore.
        C Specification

        To export a POSIX file descriptor representing the payload of a semaphore, call:

         VkResult vkGetSemaphoreFdKHR(
             VkDevice                                    device,
             const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
             int*                                        pFd);

        Each call to vkGetSemaphoreFdKHR must create a new file descriptor and transfer ownership of it to the application. To avoid leaking resources, the application must release ownership of the file descriptor when it is no longer needed.


        Ownership can be released in many ways. For example, the application can call close() on the file descriptor, or transfer ownership back to Vulkan by using the file descriptor to import a semaphore payload.

        Where supported by the operating system, the implementation must set the file descriptor to be closed automatically when an execve system call is made.

        Exporting a file descriptor from a semaphore may have side effects depending on the transference of the specified handle type, as described in Importing Semaphore State.

        Valid Usage (Implicit)
        • device must be a valid VkDevice handle
        • pGetFdInfo must be a valid pointer to a valid VkSemaphoreGetFdInfoKHR structure
        • pFd must be a valid pointer to an int value
        Return Codes
        On success, this command returns
        On failure, this command returns
        See Also


        device - the logical device that created the semaphore being exported.
        pGetFdInfo - a pointer to an instance of the VkSemaphoreGetFdInfoKHR structure containing parameters of the export operation.
        pFd - will return the file descriptor representing the semaphore payload.