OpenGL ES

Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0. More informations about OpenGL ES can be found at http://www.khronos.org/opengles/.

OpenGL ES depends on a working EGL implementation. Please refer to Mesa EGL for more information about EGL.

Build the Libraries

  1. Run configure with --enable-gles-overlay and enable the Gallium driver for your hardware.
  2. Build and install Mesa as usual.
Alternatively, if XCB-DRI2 is installed on the system, one can use egl_dri2 EGL driver with OpenGL|ES-enabled DRI drivers
  1. Run configure with --enable-gles1 --enable-gles2.
  2. Build and install Mesa as usual.

Both methods will install libGLESv1_CM, libGLESv2, libEGL, and one or more EGL drivers for your hardware.

Run the Demos

There are some demos in progs/egl/. You can use them to test your build. For example,

  $ cd progs/egl/eglut
  $ make
  $ cd ../opengles1
  $ make
  $ ./torus_x11

Developers

Internal Libraries

Library NameUsed ByEnabledOpenGLOpenGL ES 1.xOpenGL ES 2.x
src/mesa/libmesa.aClassic DRI driversyy--enable-gles1--enable-gles2
src/mesa/libmesagallium.aGallium EGL and DRI driversyy--enable-gles1--enable-gles2
src/mesa/es/libes1gallium.aGallium EGL drivers--enable-gles-overlaynyn
src/mesa/es/libes2gallium.aGallium EGL drivers--enable-gles-overlaynny

Dispatch Table

OpenGL ES has an additional indirection when dispatching fucntions

  Mesa:       glFoo() --> _mesa_Foo()
  OpenGL ES:  glFoo() --> _es_Foo() --> _mesa_Foo()

The indirection serves several purposes

Other than the last case, OpenGL ES uses APIspec.xml to generate functions to check and/or converts the arguments.