vulkan: Add EXT_acquire_xlib_display [v5]
authorKeith Packard <keithp@keithp.com>
Fri, 9 Feb 2018 15:45:58 +0000 (07:45 -0800)
committerKeith Packard <keithp@keithp.com>
Tue, 19 Jun 2018 21:17:46 +0000 (14:17 -0700)
commit7ab1fffcd2a504024b16e408de329f7a94553ecc
treea16e762884aa1a7481e1bc0fbd31c73bbd57a131
parent5a2efefb0ad90359c6671c25fa1d8815fc7e050a
vulkan: Add EXT_acquire_xlib_display [v5]

This extension adds the ability to borrow an X RandR output for
temporary use directly by a Vulkan application. For DRM, we use the
Linux resource leasing mechanism.

v2:
Clean up xlib_lease detection

* Use separate temporary '_xlib_lease' variable to hold the
  option value to avoid changin the type of a variable.

* Use boolean expressions instead of additional if statements
  to compute resulting with_xlib_lease value.

* Simplify addition of VK_USE_PLATFORM_XLIB_XRANDR_KHR to
          vulkan_wsi_args

Suggested-by: Eric Engestrom <eric.engestrom@imgtec.com>
Move mode list from wsi_display to wsi_display_connector

Fix scope for wsi_display_mode and wsi_display_connector allocs

Suggested-by: Jason Ekstrand <jason@jlekstrand.net>
v3:
Adopt Jason Ekstrand's coding conventions

Declare variables at first use, eliminate extra whitespace
between types and names. Wrap lines to 80 columns.

Explicitly forbid multiple DRM leases. Making the code support
this looks tricky and will require additional thought.

Use xcb_randr_output_t throughout the internals of the
implementation. Convert at the public API
(wsi_get_randr_output_display).

Clean up check for usable active_crtc (possible when only the
desired output is connected to the crtc).

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
v4:
Move output resource fetching closer to use in
wsi_display_get_output. This simplifies the error returns in
earlier parts of the code a bit.

Return VK_ERROR_INITIALIZATION_FAILED from
wsi_acquire_xlib_display. Jason says this is the right error
message.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
v5:
randr doesn't pass vscan over the wire, so we set vscan to 0
for randr-acquired modes, and test wsi modes for vscan <= 1
when comparing against randr modes.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
configure.ac
meson.build
meson_options.txt
src/vulkan/Makefile.am
src/vulkan/wsi/meson.build
src/vulkan/wsi/wsi_common_display.c
src/vulkan/wsi/wsi_common_display.h