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

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

=== Other Extension Metadata

*Last Modified Date*::
    2016-08-19
*IP Status*::
    No known IP claims.
*Interactions and External Dependencies*::
  - Interacts with Vulkan 1.1.
  - Interacts with `apiext:VK_KHR_dedicated_allocation`.
  - Interacts with `apiext:VK_NV_dedicated_allocation`.
*Contributors*::
  - James Jones, NVIDIA

=== Description

Applications may wish to import memory from the Direct 3D API, or export
memory to other Vulkan instances.
This extension provides a set of capability queries that allow applications
determine what types of win32 memory handles an implementation supports for
a given set of use cases.

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

=== Issues

1) Why do so many external memory capabilities need to be queried on a
per-memory-handle-type basis?

*RESOLVED*: This is because some handle types are based on OS-native objects
that have far more limited capabilities than the very generic Vulkan memory
objects.
Not all memory handle types can name memory objects that support 3D images,
for example.
Some handle types cannot even support the deferred image and memory binding
behavior of Vulkan and require specifying the image when allocating or
importing the memory object.

2) Does the slink:VkExternalImageFormatPropertiesNV struct need to include a
list of memory type bits that support the given handle type?

*RESOLVED*: No.
The memory types that do not support the handle types will simply be
filtered out of the results returned by flink:vkGetImageMemoryRequirements
when a set of handle types was specified at image creation time.

3) Should the non-opaque handle types be moved to their own extension?

*RESOLVED*: Perhaps.
However, defining the handle type bits does very little and does not require
any platform-specific types on its own, and it is easier to maintain the
bitmask values in a single extension for now.
Presumably more handle types could be added by separate extensions though,
and it would be midly weird to have some platform-specific ones defined in
the core spec and some in extensions

=== Version History

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