# VK_EXT_external_memory_dma_buf(3) Manual Page

## Name

VK_EXT_external_memory_dma_buf - device extension

Loading… please wait.

## Registered Extension Number

126

## Revision

1

## Ratification Status

Ratified

## Extension and Version Dependencies

VK_KHR_external_memory_fd

## Contact

- Lina Versace [GitHub]linyaa-kiwi

## Other Extension Metadata

Last Modified Date

  2017-10-10

IP Status

  No known IP claims.

Contributors

  - Lina Versace, Google

  - James Jones, NVIDIA

  - Faith Ekstrand, Intel

## Description

A `dma_buf` is a type of file descriptor, defined by the Linux kernel, that allows sharing memory across kernel device drivers and across processes. This extension enables applications to import a `dma_buf` as VkDeviceMemory, to export VkDeviceMemory as a `dma_buf`, and to create VkBuffer objects that can be bound to that memory.

## New Enum Constants

- `VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME`

- `VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION`

- Extending VkExternalMemoryHandleTypeFlagBits:

  - `VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT`

## Issues

1) How does the application, when creating a VkImage that it intends to bind to `dma_buf` VkDeviceMemory containing an externally produced image, specify the memory layout (such as row pitch and DRM format modifier) of the VkImage? In other words, how does the application achieve behavior comparable to that provided by `EGL_EXT_image_dma_buf_import` and `EGL_EXT_image_dma_buf_import_modifiers` ?

RESOLVED: Features comparable to those in `EGL_EXT_image_dma_buf_import` and `EGL_EXT_image_dma_buf_import_modifiers` will be provided by an extension layered atop this one.

2) Without the ability to specify the memory layout of external `dma_buf` images, how is this extension useful?

RESOLVED: This extension provides exactly one new feature: the ability to import/export between `dma_buf` and VkDeviceMemory. This feature, together with features provided by `VK_KHR_external_memory_fd`, is sufficient to bind a VkBuffer to `dma_buf`.

## Version History

- Revision 1, 2017-10-10 (Lina Versace)

  - Squashed internal revisions

## 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-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0