comp/window_direct_mode: Use XCB/Xlib interop.
Since there currently is no Vulkan extension that takes XCB handles to aqcuire the display Xlib interop needs to be used. Before this patch Monado was opening connections for both APIs, which introduced overhead. Even though all XCB handles can be casted to Xlib ones, this cannot be done with the main xcb_connection_t / Display. In it's design the interop between both APIs can create a xcb_connection_t from a XCB handle, but not the other way round. So in an interop case the Xlib connection is the main one, since it's on a higher level. More information on this can be found here: https://xcb.freedesktop.org/MixingCalls/ Unfortunately the clean solution for this would be to specify a Vulkan extension that takes XCB handles. This would make sense since Vulkan is aware of XCB in other parts of the API as well. In Mesa the Xlib structs will be ultimately casted to XCB.