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

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

=== Other Extension Metadata

*Last Modified Date*::
    2017-05-08
*IP Status*::
    No known IP claims.
*Contributors*::
  - Jesse Hall, Google
  - James Jones, NVIDIA
  - Jeff Juliano, NVIDIA
  - Cass Everitt, Oculus
  - Contributors to `<<VK_KHR_external_semaphore_win32>>`

=== Description

An application using external memory may wish to synchronize access to that
memory using fences.
This extension enables an application to export fence payload to and import
fence payload from Windows handles.

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

=== Issues

This extension borrows concepts, semantics, and language from
`<<VK_KHR_external_semaphore_win32>>`.
That extension's issues apply equally to this extension.

1) Should D3D12 fence handle types be supported, like they are for
semaphores?

*RESOLVED*: No.
Doing so would require extending the fence signal and wait operations to
provide values to signal / wait for, like sname:VkD3D12FenceSubmitInfoKHR
does.
A D3D12 fence can be signaled by importing it into a slink:VkSemaphore
instead of a slink:VkFence, and applications can check status or wait on the
D3D12 fence using non-Vulkan APIs.
The convenience of being able to do these operations on sname:VkFence
objects does not justify the extra API complexity.

=== Version History

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