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

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

=== Other Extension Metadata

*Last Modified Date*::
    2016-12-13
*IP Status*::
    No known IP claims.
*Contributors*::
  - Pierre Boudier, NVIDIA
  - James Jones, NVIDIA
  - Damien Leone, NVIDIA
  - Pierre-Loup Griffais, Valve
  - Liam Middlebrook, NVIDIA

=== Description

This is extension, along with related platform extensions, allows
applications to take exclusive control of displays associated with a native
windowing system.
This is especially useful for virtual reality applications that wish to hide
HMDs (head mounted displays) from the native platform's display management
system, desktop, and/or other applications.

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

=== Issues

1) Should this extension and its related platform-specific extensions
leverage `apiext:VK_KHR_display`, or provide separate equivalent interfaces.

*RESOLVED*: Use `apiext:VK_KHR_display` concepts and objects.
`apiext:VK_KHR_display` can be used to enumerate all displays on the system,
including those attached to/in use by a window system or native platform,
but `apiext:VK_KHR_display_swapchain` will fail to create a swapchain on
in-use displays.
This extension and its platform-specific children will allow applications to
grab in-use displays away from window systems and/or native platforms,
allowing them to be used with `apiext:VK_KHR_display_swapchain`.

2) Are separate calls needed to acquire displays and enable direct mode?

*RESOLVED*: No, these operations happen in one combined command.
Acquiring a display puts it into direct mode.

=== Version History

 * Revision 1, 2016-12-13 (James Jones)
   - Initial draft
