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