<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>EGL</title>
  <link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>

<div class="header">
  The Mesa 3D Graphics Library
</div>

<iframe src="contents.html"></iframe>
<div class="content">

<h1>EGL</h1>

<p>The current version of EGL in Mesa implements EGL 1.4.  More information
about EGL can be found at
<a href="https://www.khronos.org/egl/">
https://www.khronos.org/egl/</a>.</p>

<p>The Mesa's implementation of EGL uses a driver architecture.  The main
library (<code>libEGL</code>) is window system neutral.  It provides the EGL
API entry points and helper functions for use by the drivers.  Drivers are
dynamically loaded by the main library and most of the EGL API calls are
directly dispatched to the drivers.</p>

<p>The driver in use decides the window system to support.</p>

<h2>Build EGL</h2>

<ol>
<li>
<p>Configure your build with the desired client APIs and enable
the driver for your hardware.  For example:</p>

<pre>
$ meson configure \
        -D egl=true \
        -D gles1=true \
        -D gles2=true \
        -D dri-drivers=... \
        -D gallium-drivers=...
</pre>

<p>The main library and OpenGL is enabled by default.  The first two options
above enables <a href="opengles.html">OpenGL ES 1.x and 2.x</a>.  The last two
options enables the listed classic and Gallium drivers respectively.</p>

</li>

<li>Build and install Mesa as usual.</li>
</ol>

<p>In the given example, it will build and install <code>libEGL</code>,
<code>libGL</code>, <code>libGLESv1_CM</code>, <code>libGLESv2</code>, and one
or more EGL drivers.</p>

<h3>Configure Options</h3>

<p>There are several options that control the build of EGL at configuration
time</p>

<dl>
<dt><code>-D egl=true</code></dt>
<dd>

<p>By default, EGL is enabled.  When disabled, the main library and the drivers
will not be built.</p>

</dd>

<dt><code>-D platforms=...</code></dt>
<dd>

<p>List the platforms (window systems) to support.  Its argument is a comma
separated string such as <code>-D platforms=x11,drm</code>.  It decides
the platforms a driver may support.  The first listed platform is also used by
the main library to decide the native platform.</p>

<p>The available platforms are <code>x11</code>, <code>drm</code>,
<code>wayland</code>, <code>surfaceless</code>, <code>android</code>,
and <code>haiku</code>.
The <code>android</code> platform can either be built as a system
component, part of AOSP, using <code>Android.mk</code> files, or
cross-compiled using appropriate options.
Unless for special needs, the build system should
select the right platforms automatically.</p>

</dd>

<dt><code>-D gles1=true</code> and <code>-D gles2=true</code></dt>
<dd>

<p>These options enable OpenGL ES support in OpenGL.  The result is one big
internal library that supports multiple APIs.</p>

</dd>

<dt><code>-D shared-glapi=true</code></dt>
<dd>

<p>By default, <code>libGL</code> has its own copy of <code>libglapi</code>.
This options makes <code>libGL</code> use the shared <code>libglapi</code>.  This
is required if applications mix OpenGL and OpenGL ES.</p>

</dd>

</dl>

<h2>Use EGL</h2>

<h3>Demos</h3>

<p>There are demos for the client APIs supported by EGL.  They can be found in
mesa/demos repository.</p>

<h3>Environment Variables</h3>

<p>There are several environment variables that control the behavior of EGL at
runtime</p>

<dl>
<dt><code>EGL_PLATFORM</code></dt>
<dd>

<p>This variable specifies the native platform.  The valid values are the same
as those for <code>-D platforms=...</code>.  When the variable is not set,
the main library uses the first platform listed in
<code>-D platforms=...</code> as the native platform.</p>

<p>Extensions like <code>EGL_MESA_drm_display</code> define new functions to
create displays for non-native platforms.  These extensions are usually used by
applications that support non-native platforms.  Setting this variable is
probably required only for some of the demos found in mesa/demo repository.</p>

</dd>

<dt><code>EGL_LOG_LEVEL</code></dt>
<dd>

<p>This changes the log level of the main library and the drivers.  The valid
values are: <code>debug</code>, <code>info</code>, <code>warning</code>, and
<code>fatal</code>.</p>

</dd>
</dl>

<h2>EGL Drivers</h2>

<dl>
<dt><code>egl_dri2</code></dt>
<dd>

<p>This driver supports both <code>x11</code> and <code>drm</code> platforms.
It functions as a DRI driver loader.  For <code>x11</code> support, it talks to
the X server directly using (XCB-)DRI2 protocol.</p>

<p>This driver can share DRI drivers with <code>libGL</code>.</p>

</dd>
</dl>

<h2>Packaging</h2>

<p>The ABI between the main library and its drivers are not stable.  Nor is
there a plan to stabilize it at the moment.</p>

<h2>Developers</h2>

<p>The sources of the main library and drivers can be found at
<code>src/egl/</code>.</p>

<h3>Lifetime of Display Resources</h3>

<p>Contexts and surfaces are examples of display resources.  They might live
longer than the display that creates them.</p>

<p>In EGL, when a display is terminated through <code>eglTerminate</code>, all
display resources should be destroyed.  Similarly, when a thread is released
through <code>eglReleaseThread</code>, all current display resources should be
released.  Another way to destroy or release resources is through functions
such as <code>eglDestroySurface</code> or <code>eglMakeCurrent</code>.</p>

<p>When a resource that is current to some thread is destroyed, the resource
should not be destroyed immediately.  EGL requires the resource to live until
it is no longer current.  A driver usually calls
<code>eglIs&lt;Resource&gt;Bound</code> to check if a resource is bound
(current) to any thread in the destroy callbacks.  If it is still bound, the
resource is not destroyed.</p>

<p>The main library will mark destroyed current resources as unlinked.  In a
driver's <code>MakeCurrent</code> callback,
<code>eglIs&lt;Resource&gt;Linked</code> can then be called to check if a newly
released resource is linked to a display.  If it is not, the last reference to
the resource is removed and the driver should destroy the resource.  But it
should be careful here because <code>MakeCurrent</code> might be called with an
uninitialized display.</p>

<p>This is the only mechanism provided by the main library to help manage the
resources.  The drivers are responsible to the correct behavior as defined by
EGL.</p>

<h3><code>EGL_RENDER_BUFFER</code></h3>

<p>In EGL, the color buffer a context should try to render to is decided by the
binding surface.  It should try to render to the front buffer if the binding
surface has <code>EGL_RENDER_BUFFER</code> set to
<code>EGL_SINGLE_BUFFER</code>;  If the same context is later bound to a
surface with <code>EGL_RENDER_BUFFER</code> set to
<code>EGL_BACK_BUFFER</code>, the context should try to render to the back
buffer.  However, the context is allowed to make the final decision as to which
color buffer it wants to or is able to render to.</p>

<p>For pbuffer surfaces, the render buffer is always
<code>EGL_BACK_BUFFER</code>.  And for pixmap surfaces, the render buffer is
always <code>EGL_SINGLE_BUFFER</code>.  Unlike window surfaces, EGL spec
requires their <code>EGL_RENDER_BUFFER</code> values to be honored.  As a
result, a driver should never set <code>EGL_PIXMAP_BIT</code> or
<code>EGL_PBUFFER_BIT</code> bits of a config if the contexts created with the
config won't be able to honor the <code>EGL_RENDER_BUFFER</code> of pixmap or
pbuffer surfaces.</p>

<p>It should also be noted that pixmap and pbuffer surfaces are assumed to be
single-buffered, in that <code>eglSwapBuffers</code> has no effect on them.  It
is desirable that a driver allocates a private color buffer for each pbuffer
surface created.  If the window system the driver supports has native pbuffers,
or if the native pixmaps have more than one color buffers, the driver should
carefully attach the native color buffers to the EGL surfaces, re-route them if
required.</p>

<p>There is no defined behavior as to, for example, how
<code>glDrawBuffer</code> interacts with <code>EGL_RENDER_BUFFER</code>.  Right
now, it is desired that the draw buffer in a client API be fixed for pixmap and
pbuffer surfaces.  Therefore, the driver is responsible to guarantee that the
client API renders to the specified render buffer for pixmap and pbuffer
surfaces.</p>

<h3><code>EGLDisplay</code> Mutex</h3>

The <code>EGLDisplay</code> will be locked before calling any of the dispatch
functions (well, except for GetProcAddress which does not take an
<code>EGLDisplay</code>).  This guarantees that the same dispatch function will
not be called with the sample display at the same time.  If a driver has access
to an <code>EGLDisplay</code> without going through the EGL APIs, the driver
should as well lock the display before using it.

</div>
</body>
</html>
