• Keith Packard's avatar
    vulkan: Add EXT_acquire_xlib_display [v5] · 7ab1fffc
    Keith Packard authored
    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's avatarEric 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's avatarJason 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's avatarJason 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's avatarJason 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's avatarJason Ekstrand <jason.ekstrand@intel.com>
    Signed-off-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
    Reviewed-by: Jason Ekstrand's avatarJason Ekstrand <jason@jlekstrand.net>
    7ab1fffc