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

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

=== Other Extension Metadata

*Last Modified Date*::
    2019-03-21
*IP Status*::
    No known IP claims.
*Contributors*::
  - Ray Smith, Arm

=== Description

The `VK_EXT_headless_surface` extension is an instance extension.
It provides a mechanism to create slink:VkSurfaceKHR objects independently
of any window system or display device.
The presentation operation for a swapchain created from a headless surface
is by default a no-op, resulting in no externally-visible result.

Because there is no real presentation target, future extensions can layer on
top of the headless surface to introduce arbitrary or customisable sets of
restrictions or features.
These could include features like saving to a file or restrictions to
emulate a particular presentation target.

This functionality is expected to be useful for application and driver
development because it allows any platform to expose an arbitrary or
customisable set of restrictions and features of a presentation engine.
This makes it a useful portable test target for applications targeting a
wide range of presentation engines where the actual target presentation
engines might be scarce, unavailable or otherwise undesirable or
inconvenient to use for general Vulkan application development.

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

=== Version History

 * Revision 1, 2019-03-21 (Ray Smith)
   - Initial draft
