Skip to content

renesas-rcar/libgbm

Repository files navigation

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
-------------------