VK_KHR_external_memory_fd(3)

# VK_KHR_external_memory_fd(3) Manual Page

## Name

VK_KHR_external_memory_fd - device extension

Loading… please wait.

## Registered Extension Number

75

## Revision

1

## Ratification Status

Ratified

## Extension and Version Dependencies

VK_KHR_external_memory
or
Vulkan Version 1.1

## Contact

- James Jones [GitHub]cubanismo

## Other Extension Metadata

Last Modified Date

  2016-10-21

IP Status

  No known IP claims.

Contributors

  - James Jones, NVIDIA

  - Jeff Juliano, NVIDIA

## Description

An application may wish to reference device memory in multiple Vulkan logical devices or instances, in multiple processes, and/or in multiple APIs. This extension enables an application to export POSIX file descriptor handles from Vulkan memory objects and to import Vulkan memory objects from POSIX file descriptor handles exported from other Vulkan memory objects or from similar resources in other APIs.

## New Commands

- vkGetMemoryFdKHR

- vkGetMemoryFdPropertiesKHR

## New Structures

- VkMemoryFdPropertiesKHR

- VkMemoryGetFdInfoKHR

- Extending VkMemoryAllocateInfo:

  - VkImportMemoryFdInfoKHR

## New Enum Constants

- `VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME`

- `VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR`

  - `VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR`

  - `VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR`

## Issues

1) Does the application need to close the file descriptor returned by vkGetMemoryFdKHR?

RESOLVED: Yes, unless it is passed back in to a driver instance to import the memory. A successful get call transfers ownership of the file descriptor to the application, and a successful import transfers it back to the driver. Destroying the original memory object will not close the file descriptor or remove its reference to the underlying memory resource associated with it.

2) Do drivers ever need to expose multiple file descriptors per memory object?

RESOLVED: No. This would indicate there are actually multiple memory objects, rather than a single memory object.

3) How should the valid size and memory type for POSIX file descriptor memory handles created outside of Vulkan be specified?

RESOLVED: The valid memory types are queried directly from the external handle. The size will be specified by future extensions that introduce such external memory handle types.

## Version History

- Revision 1, 2016-10-21 (James Jones)

  - Initial revision

## See Also

No cross-references are available

## 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

Copyright 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0