/ appendices / VK_NV_external_memory.txt
VK_NV_external_memory.txt
1 include::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 11 Applications may wish to export memory to other Vulkan instances or other 12 APIs, or import memory from other Vulkan instances or other APIs to enable 13 Vulkan workloads to be split up across application module, process, or API 14 boundaries. 15 This extension enables applications to create exportable Vulkan memory 16 objects such that the underlying resources can be referenced outside the 17 Vulkan instance that created them. 18 19 === New Object Types 20 21 None. 22 23 === New Enum Constants 24 25 Extending 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 32 None. 33 34 === New Structures 35 36 * Extending slink:VkImageCreateInfo: 37 ** slink:VkExternalMemoryImageCreateInfoNV 38 * Extending slink:VkMemoryAllocateInfo 39 ** slink:VkExportMemoryAllocateInfoNV 40 41 === New Functions 42 43 None. 44 45 === Issues 46 47 1) If memory objects are shared between processes and APIs, is this 48 considered 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 52 forms of aliasing in these cases. 53 Further, other extensions may build upon these new aliasing rules to define 54 specific support usage within Vulkan for imported native memory objects, or 55 memory objects from other APIs. 56 57 2) Are new image layouts or metadata required to specify image layouts and 58 layout transitions compatible with non-Vulkan APIs, or with other instances 59 of the same Vulkan driver? 60 61 *RESOLVED*: No. 62 Separate instances of the same Vulkan driver running on the same GPU should 63 have identical internal layout semantics, so applictions have the tools they 64 need to ensure views of images are consistent between the two instances. 65 Other APIs will fall into two categories: Those that are Vulkan compatible 66 (a term to be defined by subsequent interopability extensions), or Vulkan 67 incompatible. 68 When sharing images with Vulkan incompatible APIs, the Vulkan image must be 69 transitioned to the ename:VK_IMAGE_LAYOUT_GENERAL layout before handing it 70 off to the external API. 71 72 Note this does not attempt to address cross-device transitions, nor 73 transitions to engines on the same device which are not visible within the 74 Vulkan API. 75 Both 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