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

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

=== Other Extension Metadata

*Last Modified Date*::
    2017-05-08
*IP Status*::
    No known IP claims.
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.1 Core
*Contributors*::
  - Jesse Hall, Google
  - James Jones, NVIDIA
  - Jeff Juliano, NVIDIA
  - Cass Everitt, Oculus
  - Contributors to `apiext:VK_KHR_external_semaphore_capabilities`

=== Description

An application may wish to reference device fences in multiple Vulkan
logical devices or instances, in multiple processes, and/or in multiple
APIs.
This extension provides a set of capability queries and handle definitions
that allow an application to determine what types of "`external`" fence
handles an implementation supports for a given set of use cases.

=== Promotion to Vulkan 1.1

All functionality in this extension is included in core Vulkan 1.1, with the
KHR suffix omitted.
The original type, enum and command names are still available as aliases of
the core functionality.

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

=== Version History

 * Revision 1, 2017-05-08 (Jesse Hall)
   - Initial version
