<!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>Mesa EGL</title>
  <link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>

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

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

<h1>Mesa 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>Run <code>configure</code> with the desired client APIs and enable
the driver for your hardware.  For example</p>

<pre>
  $ ./configure --enable-gles1 --enable-gles2 \
                --with-dri-drivers=... \
                --with-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>--enable-egl</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>--with-egl-driver-dir</code></dt>
<dd>

<p>The directory EGL drivers should be installed to.  If not specified, EGL
drivers will be installed to <code>${libdir}/egl</code>.</p>

</dd>

<dt><code>--with-platforms</code></dt>
<dd>

<p>List the platforms (window systems) to support.  Its argument is a comma
separated string such as <code>--with-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 <code>configure</code> options.
The <code>haiku</code> platform can only be built with SCons.
Unless for special needs, the build system should
select the right platforms automatically.</p>

</dd>

<dt><code>--enable-gles1</code></dt>
<dt><code>--enable-gles2</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>--enable-shared-glapi</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_DRIVERS_PATH</code></dt>
<dd>

<p>By default, the main library will look for drivers in the directory where
the drivers are installed to.  This variable specifies a list of
colon-separated directories where the main library will look for drivers, in
addition to the default directory.  This variable is ignored for setuid/setgid
binaries.</p>

<p>This variable is usually set to test an uninstalled build.  For example, one
may set</p>

<pre>
  $ export LD_LIBRARY_PATH=$mesa/lib
  $ export EGL_DRIVERS_PATH=$mesa/lib/egl
</pre>

<p>to test a build without installation</p>

</dd>

<dt><code>EGL_DRIVER</code></dt>
<dd>

<p>This variable specifies a full path to or the name of an EGL driver.  It
forces the specified EGL driver to be loaded.  It comes in handy when one wants
to test a specific driver.  This variable is ignored for setuid/setgid
binaries.</p>

</dd>

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

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

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