include::meta/VK_EXT_external_memory_dma_buf.txt[]

*Last Modified Date*::
    2017-10-10
*IP Status*::
    No known IP claims.
*Contributors*::
  - Chad Versace, Google
  - James Jones, NVIDIA
  - Jason Ekstrand, Intel

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
slink:VkDeviceMemory; to export slink:VkDeviceMemory as a dma_buf; and to
create slink:VkBuffer objects that can: be bound to that memory.

=== New Enum Constants

  * Extending elink:VkExternalMemoryHandleTypeFlagBitsKHR:
  ** ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT

=== Issues

1.
   How does the application, when creating a slink:VkImage that it intends
   to bind to dma_buf slink:VkDeviceMemory that contains an externally
   produced image, specify the memory layout (such as row pitch and DRM
   format modifier) of the slink:VkImage? In other words, how does the
   application achieve behavior comparable to that provided by
   https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt[EGL_EXT_image_dma_buf_import]
   and
   https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt[EGL_EXT_image_dma_buf_import_modifiers]?
+
--
*RESOLVED*.
Features comparable to those in
https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt[EGL_EXT_image_dma_buf_import]
and
https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt[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_bufs and slink:VkDeviceMemory.
This feature, together with features provided by
`<<VK_KHR_external_memory_fd>>`, is sufficient to bind a slink:VkBuffer to
dma_buf.
--

=== Version History

  * Revision 1, 2017-10-10 (Chad Versace)
    - Squashed internal revisions
