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

include::{generated}/meta/{refprefix}VK_NV_external_memory.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2016-08-19
*IP Status*::
    No known IP claims.
*Contributors*::
  - James Jones, NVIDIA
  - Carsten Rohde, NVIDIA

=== Description

Applications may wish to export memory to other Vulkan instances or other
APIs, or import memory from other Vulkan instances or other APIs to enable
Vulkan workloads to be split up across application module, process, or API
boundaries.
This extension enables applications to create exportable Vulkan memory
objects such that the underlying resources can be referenced outside the
Vulkan instance that created them.

include::{generated}/interfaces/VK_NV_external_memory.txt[]

=== Issues

1) If memory objects are shared between processes and APIs, is this
considered aliasing according to the rules outlined in the
<<resources-memory-aliasing,Memory Aliasing>> section?

*RESOLVED*: Yes, but strict exceptions to the rules are added to allow some
forms of aliasing in these cases.
Further, other extensions may build upon these new aliasing rules to define
specific support usage within Vulkan for imported native memory objects, or
memory objects from other APIs.

2) Are new image layouts or metadata required to specify image layouts and
layout transitions compatible with non-Vulkan APIs, or with other instances
of the same Vulkan driver?

*RESOLVED*: No.
Separate instances of the same Vulkan driver running on the same GPU should
have identical internal layout semantics, so applictions have the tools they
need to ensure views of images are consistent between the two instances.
Other APIs will fall into two categories: Those that are Vulkan compatible
(a term to be defined by subsequent interopability extensions), or Vulkan
incompatible.
When sharing images with Vulkan incompatible APIs, the Vulkan image must be
transitioned to the ename:VK_IMAGE_LAYOUT_GENERAL layout before handing it
off to the external API.

Note this does not attempt to address cross-device transitions, nor
transitions to engines on the same device which are not visible within the
Vulkan API.
Both of these are beyond the scope of this extension.

=== Examples

[source,c++]
----------------------------------------

    // TODO: Write some sample code here.

----------------------------------------

=== Version History

  * Revision 1, 2016-08-19 (James Jones)
    - Initial draft
