include::{generated}/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 code: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 code:dma_buf as slink:VkDeviceMemory, to export slink:VkDeviceMemory as a code: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 code:dma_buf slink:VkDeviceMemory containing 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 code:dma_buf images, how is this extension useful? *RESOLVED*: This extension provides exactly one new feature: the ability to import/export between code:dma_buf and slink:VkDeviceMemory. This feature, together with features provided by `<>`, is sufficient to bind a slink:VkBuffer to code:dma_buf. === Version History * Revision 1, 2017-10-10 (Chad Versace) - Squashed internal revisions