Vulkan-Docs/chapters/VK_EXT_headless_surface/headless.txt

65 lines
2.5 KiB
Plaintext

// Copyright (c) 2017-2019 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
[[headless,headless]]
=== Presenting to headless surfaces
Vulkan rendering can be presented to a headless surface, where the
presentation operation is a no-op producing no externally-visible result.
[NOTE]
.Note
====
Because there is no real presentation target, the headless presentation
engine may be extended to impose an arbitrary or customisable set of
restrictions and features.
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.
The usual surface query mechanisms must be used to determine the actual
restrictions and features of the implementation.
====
[open,refpage='vkCreateHeadlessSurfaceEXT',desc='Create a headless slink:VkSurfaceKHR object',type='protos']
--
To create a headless sname:VkSurfaceKHR object, call:
include::{generated}/api/protos/vkCreateHeadlessSurfaceEXT.txt[]
* pname:instance is the instance to associate the surface with.
* pname:pCreateInfo is a pointer to an instance of the
slink:VkHeadlessSurfaceCreateInfoEXT structure containing parameters
affecting the creation of the surface object.
* pname:pAllocator is the allocator used for host memory allocated for the
surface object when there is no more specific allocator available (see
<<memory-allocation,Memory Allocation>>).
* pname:pSurface points to a sname:VkSurfaceKHR handle in which the
created surface object is returned.
include::{generated}/validity/protos/vkCreateHeadlessSurfaceEXT.txt[]
--
[open,refpage='VkHeadlessSurfaceCreateInfoEXT',desc='Structure specifying parameters of a newly created headless surface object',type='structs']
--
The sname:VkHeadlessSurfaceCreateInfoEXT structure is defined as:
include::{generated}/api/structs/VkHeadlessSurfaceCreateInfoEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:flags is reserved for future use.
include::{generated}/validity/structs/VkHeadlessSurfaceCreateInfoEXT.txt[]
--
For headless surfaces, pname:currentExtent is undefined [eq]#(0xFFFFFFFF,
0xFFFFFFFF)#.
Whatever the application sets a swapchain's pname:imageExtent to will be the
size of the surface, after the first image is presented.