Skip to content
  • Lubosz Sarnecki's avatar
    comp/window_direct_mode: Use XCB/Xlib interop. · 4d0c4909
    Lubosz Sarnecki authored
    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.
    4d0c4909