// Copyright (c) 2018-2020 NVIDIA Corporation
//
// SPDX-License-Identifier: CC-BY-4.0

When allocating memory that may: be exported to another process or Vulkan
instance, add a slink:VkExportMemoryAllocateInfoNV structure to the
pname:pNext chain of the slink:VkMemoryAllocateInfo structure, specifying
the handle types that may: be exported.

[open,refpage='VkExportMemoryAllocateInfoNV',desc='Specify memory handle types that may be exported',type='structs']
--
The slink:VkExportMemoryAllocateInfoNV structure is defined as:

include::{generated}/api/structs/VkExportMemoryAllocateInfoNV.txt[]

  * pname:sType is the type of this structure.
  * pname:pNext is `NULL` or a pointer to a structure extending this
    structure.
  * pname:handleTypes is a bitmask of
    elink:VkExternalMemoryHandleTypeFlagBitsNV specifying one or more memory
    handle types that may: be exported.
    Multiple handle types may: be requested for the same allocation as long
    as they are compatible, as reported by
    flink:vkGetPhysicalDeviceExternalImageFormatPropertiesNV.

include::{generated}/validity/structs/VkExportMemoryAllocateInfoNV.txt[]
--
