Miguel A. Vico - EGL external platform management infrastructure and Wayland implementation as external platform

Slides, Video

EGL_EXT_platform_base was designed to provide mechanisms for EGL clients to interact with multiple window systems or platforms at runtime.

Nevertheless, adding runtime support for new window systems or platforms to EGL usually requires changes to each vendor-specific libEGL library. Those changes are even more intrusive when, in addition to the platform itself, platform-specific extensions must be supported.

Adding support for new platforms can be burdensome for driver vendors that maintain their own EGL implementations, causing a chicken-and-egg style situation in which platforms must firmly establish themselves before they can acquire support from vendors, while broad driver support is at the same time a barrier to acceptance of a new platform. Fortunately, some window systems and platforms may be exclusively written on top of existing EGL buffer-management mechanisms such as EGLStreams or GBM.

This talk will introduce a work-in-progress project which takes EGL_EXT_platform_wayland and friends as an example to show how a window system can be externally supported on top of simpler EGL platforms, keeping it out of libEGL. Specifically, an implementation of EGL_EXT_platform_wayland using only application facing EGL functions from the EGLDevice and EGLStream family of extensions will be shown.

A minimal set of EGL functions, describing the EGL external API, must be implemented by the external platform library. Then, client calls to EGL application-facing APIs will be forwarded to the corresponding external implementations.