# EGL (/integration/embedded_linux/drivers/egl)



Overview [#overview]

[**EGL**](https://en.wikipedia.org/wiki/EGL_\(API\)) (Embedded-System Graphics Library) is the platform layer that binds OpenGL ES to a native windowing
system. It sits lower than GLFW and is more closely tied to the platform's own drivers, which is why it is
the path LVGL uses for GPU rendering on embedded Linux.

You rarely enable EGL on its own. It underpins the hardware-accelerated backends of the other drivers:

* [DRM](/integration/embedded_linux/drivers/drm) with `LV_LINUX_DRM_BACKEND_EGL`
* [Wayland](/integration/embedded_linux/drivers/wayland) with `LV_WAYLAND_USE_EGL`
* [SDL](/integration/pc/sdl) with `LV_SDL_BACKEND_EGL`

Selecting any of those backends turns EGL on for you and sets up the context during normal driver
initialization. Beyond that, EGL offers two things the other drivers do
not: a standalone window path for platforms LVGL does not otherwise cover, and off-screen rendering with no
display server at all.

Building [#building]

LVGL loads `libEGL.so` and `libGLESv2.so` at runtime with `dlopen`, so EGL doesn't have any build-time dependencies.

<Callout type="warning" title="EGL and GLFW are mutually exclusive">
  <ApiLink name="LV_USE_GLFW" /> cannot be combined with <ApiLink name="LV_USE_EGL" />
  each wants to own context creation.
</Callout>

Usage [#usage]

With a driver backend, EGL is invisible: configure the driver as its own page describes and it initializes
EGL during setup. See [DRM](/integration/embedded_linux/drivers/drm) or
[Wayland](/integration/embedded_linux/drivers/wayland) for working examples.

See Also [#see-also]

* [DRM](/integration/embedded_linux/drivers/drm) - EGL backend for direct-to-display rendering
* [Wayland](/integration/embedded_linux/drivers/wayland) - EGL backend under a compositor
* [OpenGL Driver](/integration/embedded_linux/drivers/opengl_driver) - use when you already own the context
* [OpenGL Overview](/integration/embedded_linux/opengl) - how the drivers and draw units fit together
* [NanoVG Draw Unit](/integration/embedded_linux/draw_units/draw_nanovg) - the renderer used for off-screen rendering
* [glTF](/libs/gltf) - 3D content, the strongest case for headless GPU rendering
