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

[open,refpage='vkAcquireXlibDisplayEXT',desc='Acquire access to a VkDisplayKHR using Xlib',type='protos']
--
To acquire permission to directly access a display in Vulkan from an X11
server, call:

include::{generated}/api/protos/vkAcquireXlibDisplayEXT.txt[]

  * pname:physicalDevice The physical device the display is on.
  * pname:dpy A connection to the X11 server that currently owns
    pname:display.
  * pname:display The display the caller wishes to control in Vulkan.

All permissions necessary to control the display are granted to the Vulkan
instance associated with pname:physicalDevice until the display is released
or the X11 connection specified by pname:dpy is terminated.
Permission to access the display may: be temporarily revoked during periods
when the X11 server from which control was acquired itself loses access to
pname:display.
During such periods, operations which require access to the display must:
fail with an approriate error code.
If the X11 server associated with pname:dpy does not own pname:display, or
if permission to access it has already been acquired by another entity, the
call must: return the error code ename:VK_ERROR_INITIALIZATION_FAILED.

[NOTE]
.Note
====
One example of when an X11 server loses access to a display is when it loses
ownership of its virtual terminal.
====

include::{generated}/validity/protos/vkAcquireXlibDisplayEXT.txt[]
--

[open,refpage='vkGetRandROutputDisplayEXT',desc='Query the VkDisplayKHR corresponding to an X11 RandR Output',type='protos']
--
When acquiring displays from an X11 server, an application may also wish to
enumerate and identify them using a native handle rather than a
sname:VkDisplayKHR handle.
To determine the sname:VkDisplayKHR handle corresponding to an X11 RandR
Output, call:

include::{generated}/api/protos/vkGetRandROutputDisplayEXT.txt[]

  * pname:physicalDevice The physical device to query the display handle on.
  * pname:dpy A connection to the X11 server from which pname:rrOutput was
    queried.
  * pname:rrOutput An X11 RandR output ID.
  * pname:pDisplay The corresponding slink:VkDisplayKHR handle will be
    returned here.

If there is no slink:VkDisplayKHR corresponding to pname:rrOutput on
pname:physicalDevice, dlink:VK_NULL_HANDLE must: be returned in
pname:pDisplay.

include::{generated}/validity/protos/vkGetRandROutputDisplayEXT.txt[]
--
