• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1include::meta/VK_NV_external_memory.txt[]
2
3*Last Modified Date*::
4    2016-08-19
5*IP Status*::
6    No known IP claims.
7*Contributors*::
8  - James Jones, NVIDIA
9  - Carsten Rohde, NVIDIA
10
11Applications may wish to export memory to other Vulkan instances or other
12APIs, or import memory from other Vulkan instances or other APIs to enable
13Vulkan workloads to be split up across application module, process, or API
14boundaries.
15This extension enables applications to create exportable Vulkan memory
16objects such that the underlying resources can be referenced outside the
17Vulkan instance that created them.
18
19=== New Object Types
20
21None.
22
23=== New Enum Constants
24
25Extending elink:VkStructureType:
26
27  ** ename:VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV
28  ** ename:VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV
29
30=== New Enums
31
32None.
33
34=== New Structures
35
36  * Extending slink:VkImageCreateInfo:
37  ** slink:VkExternalMemoryImageCreateInfoNV
38  * Extending slink:VkMemoryAllocateInfo
39  ** slink:VkExportMemoryAllocateInfoNV
40
41=== New Functions
42
43None.
44
45=== Issues
46
471) If memory objects are shared between processes and APIs, is this
48considered aliasing according to the rules outlined in the
49<<resources-memory-aliasing,Memory Aliasing>> section?
50
51*RESOLVED*: Yes, but strict exceptions to the rules are added to allow some
52forms of aliasing in these cases.
53Further, other extensions may build upon these new aliasing rules to define
54specific support usage within Vulkan for imported native memory objects, or
55memory objects from other APIs.
56
572) Are new image layouts or metadata required to specify image layouts and
58layout transitions compatible with non-Vulkan APIs, or with other instances
59of the same Vulkan driver?
60
61*RESOLVED*: No.
62Separate instances of the same Vulkan driver running on the same GPU should
63have identical internal layout semantics, so applictions have the tools they
64need to ensure views of images are consistent between the two instances.
65Other APIs will fall into two categories: Those that are Vulkan compatible
66(a term to be defined by subsequent interopability extensions), or Vulkan
67incompatible.
68When sharing images with Vulkan incompatible APIs, the Vulkan image must be
69transitioned to the ename:VK_IMAGE_LAYOUT_GENERAL layout before handing it
70off to the external API.
71
72Note this does not attempt to address cross-device transitions, nor
73transitions to engines on the same device which are not visible within the
74Vulkan API.
75Both of these are beyond the scope of this extension.
76
77=== Examples
78
79[source,c++]
80----------------------------------------
81
82    // TODO: Write some sample code here.
83
84----------------------------------------
85
86=== Version History
87
88  * Revision 1, 2016-08-19 (James Jones)
89    - Initial draft
90