blob: 440d057008b26936d3009d017a634dcddc86b87b [file] [log] [blame]
// Copyright 2017-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0
include::{generated}/meta/{refprefix}VK_EXT_external_memory_dma_buf.txt[]
=== Other Extension Metadata
*Last Modified Date*::
2017-10-10
*IP Status*::
No known IP claims.
*Contributors*::
- Chad Versace, Google
- James Jones, NVIDIA
- Jason Ekstrand, Intel
=== Description
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.
include::{generated}/interfaces/VK_EXT_external_memory_dma_buf.txt[]
=== 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
`apiext:VK_KHR_external_memory_fd`, is sufficient to bind a slink:VkBuffer
to code:dma_buf.
=== Version History
* Revision 1, 2017-10-10 (Chad Versace)
- Squashed internal revisions