EGL (API)

{{short description|Application programming interface}}

{{Infobox software

| name = EGL (OpenGL)

| logo = File:EGL OpenGL Logo.svg

| author = Khronos Group

| developer = Khronos Group

| latest release version = 1.5{{cite web |url=https://www.khronos.org/news/press/khronos-releases-egl-1.5-specification |title=Press Release, Khronos Releases EGL 1.5 Specification |publisher=Khronos Group |date=2014-03-19 |access-date=2014-03-20}}

| latest release date = {{Start date and age|2014|03|19}}

| programming language = C

| operating system = Cross-platform

| platform = Cross-platform

| genre = API

| license =

| website = {{URL|https://www.khronos.org/egl/}}

}}

EGL is an interface between Khronos rendering APIs (such as OpenGL, OpenGL ES or OpenVG) and the underlying native platform windowing system. EGL handles graphics context management, surface/buffer binding, rendering synchronization, and enables "high-performance, accelerated, mixed-mode 2D and 3D rendering using other Khronos APIs."{{Cite web|url=https://www.khronos.org/egl/|title=EGL Overview, Native Platform Interface|date=July 19, 2011|website=The Khronos Group}} EGL is managed by the non-profit technology consortium Khronos Group.

The acronym EGL is an initialism, which starting from EGL version 1.2 refers to Khronos Native Platform Graphics Interface.{{Cite web|url=http://www.khronos.org/registry/egl/specs/eglspec.1.2.pdf|title=Khronos Native Platform Graphics Interface (EGL Version 1.2) (July 28, 2005) |editor=Jon Leech}} Prior to version 1.2, the name of the EGL specification was OpenGL ES Native Platform Graphics Interface.{{Cite web|url=http://www.khronos.org/registry/egl/specs/eglspec.1.0.pdf|title=OpenGL® ES Native Platform Graphics Interface (Version 1.0)|editor=Jon Leech}} X.Org development documentation glossary defines EGL as "Embedded-System Graphics Library".{{Cite web|url=https://www.x.org/wiki/Development/Documentation/Glossary/|title=Glossary|website=X.Org Foundation}}

Adoption

{{Multiple image

| align = right

| direction = vertical

| header = As an interface between OpenGL ES or OpenVG and the underlying windowing system, EGL has found wide adoption

| width = 300

| image1 = The Linux Graphics Stack and glamor.svg

| alt1 = The Linux graphic stack

| caption1 = Wayland clients use EGL to directly draw into the framebuffer. The display server sits between the kernel (here: Linux kernel) and its clients. It communicates with its clients over a given protocol.

| image2 = Wayland display server protocol.svg

| alt2 = Wayland display server protocol

| caption2 = The free implementations of the Wayland (display server protocol) rely upon the Mesa implementation of EGL. A special library called libwayland-EGL was written to accommodate the access to the framebuffer

}}

  • The BlackBerry 10 and BlackBerry Tablet OS mobile device operating system uses EGL for 3D graphics rendering. Both support EGL version 1.4.{{Cite web |url=http://developer.blackberry.com/native/documentation/core/opengl_es_developer_guide.html |title= Developer Guide |access-date=2014-05-28 |archive-url=https://web.archive.org/web/20131010082650/http://developer.blackberry.com/native/documentation/core/opengl_es_developer_guide.html |archive-date=2013-10-10 |url-status=dead }}
  • The Android mobile device operating system uses EGL for 3D graphics rendering.{{Cite web | url=http://developer.android.com/about/versions/android-2.3-highlights.html | title=Android 2.3 Gingerbread, New Features|website=Android Developers}}
  • The Wayland display server protocol uses EGL.{{Cite web | url=http://ppaalanen.blogspot.com/2012/03/what-does-egl-do-in-wayland-stack.html | title=What does EGL do in the Wayland stack | date=10 March 2012 |author=Pekka Paalanen}} It is implemented in a way that Wayland clients will draw directly to the framebuffer using EGL.
  • Mesa 3D has an implementation of EGL formerly known as Eagle.{{Cite web|url=https://docs.mesa3d.org/egl.html|title=EGL — The Mesa 3D Graphics Library latest documentation|website=Mesa 3D Documentation}}
  • The Mir display server protocol by Canonical Ltd. uses EGL.{{Cite web |url=https://wiki.ubuntu.com/MirSpec |title=MirSpec |access-date=2013-03-07 |archive-date=2013-03-06 |archive-url=https://web.archive.org/web/20130306104754/https://wiki.ubuntu.com/MirSpec |url-status=dead }}
  • The Simple DirectMedia Layer toolkit has been ported to use EGL. It can use Xlib, write directly to the framebuffer or use EGL.
  • The Raspberry Pi single-board computer has an EGL interface to hardware-accelerated 3D graphics rendering.{{Cite web|url=https://elinux.org/RPi_VideoCore_APIs|title=Raspberry Pi VideoCore APIs - eLinux.org|website=elinux.org}}
  • The proprietary Nvidia driver 331.13 BETA from 4 October 2013 supports the EGL API.{{cite web|url=http://www.nvidia.com/object/linux-display-amd64-331.13-driver.html |title=Added support for the EGL API on 32-bit platforms. Currently, the supported client APIs are OpenGL ES 1.1, 2.0 and 3.0, and the only supported window system backend is X11. |date=2013-10-04 |access-date=2013-10-05}}
  • Tizen OS uses EGL with either OpenGL ES 1.1 or OpenGL ES 2.0 for 3D graphics rendering{{Cite web | url=https://wiki.tizen.org/wiki/Porting_Guide/Graphics_and_UI | title=Porting Guide/Graphics and UI - Tizen Wiki | access-date=2015-03-06 | archive-date=2015-04-27 | archive-url=https://web.archive.org/web/20150427204349/https://wiki.tizen.org/wiki/Porting_Guide/Graphics_and_UI | url-status=dead }}

Implementations

See also

  • WGL – the equivalent Windows interface to OpenGL
  • CGL – the equivalent OS X interface to OpenGL
  • GLX – the equivalent X11 interface to OpenGL
  • AIGLX – an attempt to accelerate GLX
  • WSI – the Vulkan Window System Interface (WSI) does for Vulkan what EGL does for OpenGL ES.

References

{{Reflist}}