VK_EXT_external_memory_dma_buf
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