From ada46053a4b37967cc53355b9baf712aa5a8bafd Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Thu, 21 Jan 2010 15:29:14 +0800 Subject: [PATCH] docs: Add documentation for EGL. This is a short guide to EGL. The drivers that are to be removed soon are not mentioned in the guide. --- docs/egl.html | 224 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 docs/egl.html diff --git a/docs/egl.html b/docs/egl.html new file mode 100644 index 00000000000..ccc233fca98 --- /dev/null +++ b/docs/egl.html @@ -0,0 +1,224 @@ + + +Mesa EGL + + + + + +

Mesa EGL

+ +

The current version of EGL in Mesa implements EGL 1.4. More information +about EGL can be found at +http://www.khronos.org/egl/.

+ +

The Mesa's implementation of EGL uses a driver architecture. The main +library (libEGL) 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.

+ +

The driver in use decides the window system to support. For drivers that +support hardware rendering, there are usually multiple drivers supporting the +same window system. Each one of of them supports a certain range of graphics +cards.

+ +

Build EGL

+ +
    +
  1. +

    Run configure with the desired state trackers and and enable +the Gallium driver for your hardware. For example

    + +
    +  $ ./configure --with-state-trackers=egl_g3d,es,vega --enable-gallium-intel
    +
    + +

    The main library will be enabled by default. The egl_g3d state +tracker is needed by a number of EGL drivers. EGL drivers will be covered +later. The es state tracker provides OpenGL ES 1.x +and 2.x and the vega state tracker provides OpenVG +1.x.

    +
  2. + +
  3. Build and install Mesa as usual.
  4. +
+ +

In the given example, it will build and install libEGL, +libGLESv1_CM, libGLESv2, libOpenVG, and +one or more EGL drivers.

+ +

Configure Options

+ +

There are several options that control the build of EGL at configuration +time

+ + + +

OpenGL

+ +

The OpenGL state tracker is not built in the above example. It should be +noted that the classic libGL is not a state tracker and cannot be +used with EGL (unless the EGL driver in use is egl_glx). To build +the OpenGL state tracker, one may append glx to +--with-state-trackers and manually build +src/gallium/winsys/xlib/.

+ +

Use EGL

+ +

The demos for OpenGL ES and OpenVG can be found in progs/es1/, +progs/es2/ and progs/openvg/. You can use them to +test your build. For example,

+ +
+  $ cd progs/es1/xegl
+  $ make
+  $ ./torus
+
+ +

Environment Variables

+ +

There are several environment variables that control the behavior of EGL at +runtime

+ + + +

EGL Drivers

+ +

There are two categories of EGL drivers: Gallium and classic.

+ +

Gallium EGL drivers supports all rendering APIs specified in EGL 1.4. The +support for optional EGL functions and EGL extensions is usually more complete +than the classic ones. These drivers depend on the egl_g3d state +tracker to build. The available drivers are

+ + + +

<dpy> is given by --with-egl-displays at +configuration time. There will be one EGL driver for each combination of the +displays listed and the hardware drivers enabled.

+ +

Classic EGL drivers, on the other hand, supports only OpenGL as its +rendering API. They can be found under src/egl/drivers/. There +are 3 of them

+ + + +

To use the classic drivers, one must manually set EGL_DRIVER at +runtime.

+ +

Developers

+ +The sources of the main library and the classic drivers can be found at +src/egl/. The sources of the egl_g3d state tracker +can be found at src/gallium/state_trackers/egl_g3d/. + +

TODOs

+ + + + + -- 2.30.2