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

include::{generated}/meta/{refprefix}VK_KHR_external_fence.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`

=== Description

An application using external memory may wish to synchronize access to that
memory using fences.
This extension enables an application to create fences from which non-Vulkan
handles that reference the underlying synchronization primitive can be
exported.

=== 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.txt[]

=== Issues

This extension borrows concepts, semantics, and language from
`apiext:VK_KHR_external_semaphore`.
That extension's issues apply equally to this extension.

=== Version History

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