This is the gbm frontend used by (for example) weston compositor to load the GLES stack, and retrieve the backing buffer objects behind an eglImage (created with EGL_WAYLAND_BUFFER_WL), etc. The frontend is really just a backend loader and shim. The backend library must be provided by the GLES implementation. To get wayland up and running on your GLES stack: 1) implement gbm backend 2) implement EGL_WL_bind_wayland_display extension (including EGL_WAYLAND_BUFFER_WL eglCreateImageKHR target for compositor-drm it looks like we also need EGL_KHR_surfaceless_gles2 extension.. ---- <robclark> hmm, I don't suppose there is any extension description for EGL_KHR_surfaceless_gles2 ? <pq> robclark, it should simply mean you can eglMakeCurrent with NULL surface, but a real context. ---- 3) implement wayland-egl (must provide wayland-egl.pc) 4) ??? 5) PROFIT!! need this in your eglext.h: ------------------- #ifndef EGL_WL_bind_wayland_display #define EGL_WL_bind_wayland_display 1 #define EGL_WAYLAND_BUFFER_WL 0x31D5 /* eglCreateImageKHR target */ struct wl_display; #ifdef EGL_EGLEXT_PROTOTYPES EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display); EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display); #endif typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display); typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display); #endif -------------------