// Copyright 2017-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

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

=== Other Extension Metadata

*Last Modified Date*::
    2017-11-01
*IP Status*::
    No known IP claims.
*Contributors*::
  - Chad Versace, Google
  - James Jones, NVIDIA
  - Jason Ekstrand, Intel
  - Jesse Hall, Google
  - Daniel Rakos, AMD
  - Ray Smith, ARM

=== Description

This extension defines a special queue family,
ename:VK_QUEUE_FAMILY_FOREIGN_EXT, which can be used to transfer ownership
of resources backed by external memory to foreign, external queues.
This is similar to ename:VK_QUEUE_FAMILY_EXTERNAL_KHR, defined in
`apiext:VK_KHR_external_memory`.
The key differences between the two are:

  * The queues represented by ename:VK_QUEUE_FAMILY_EXTERNAL_KHR must share
    the same physical device and the same driver version as the current
    slink:VkInstance.
    ename:VK_QUEUE_FAMILY_FOREIGN_EXT has no such restrictions.
    It can represent devices and drivers from other vendors, and can even
    represent non-Vulkan-capable devices.
  * All resources backed by external memory support
    ename:VK_QUEUE_FAMILY_EXTERNAL_KHR.
    Support for ename:VK_QUEUE_FAMILY_FOREIGN_EXT is more restrictive.
  * Applications should expect transitions to/from
    ename:VK_QUEUE_FAMILY_FOREIGN_EXT to be more expensive than transitions
    to/from ename:VK_QUEUE_FAMILY_EXTERNAL_KHR.

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

=== Version History

  * Revision 1, 2017-11-01 (Chad Versace)
    - Squashed internal revisions
