Use EGL_LINUX_DMA_BUF_EXT to create GBM bo EGLImages

Xwayland was passing GBM bos directly to
eglCreateImageKHR using the EGL_NATIVE_PIXMAP_KHR
target. Given the EGL GBM platform spec claims it
is invalid to create a EGLSurface from a native
pixmap on the GBM platform, implying there is no
mapping between GBM objects and EGL's concept of
native pixmaps, this seems a bit questionable.

This change modifies the bo import function to
extract all the required data from the bo and then
imports it as a dma-buf instead when the dma-buf +
modifiers path is available.

Signed-off-by: James Jones <>
Reviewed-by: Simon Ser <>
5 jobs for xwayland_dma_buf in 4 minutes and 49 seconds (queued for 6 seconds)