The current version of the OpenGL ES state trackers implement OpenGL ES 1.1 and OpenGL ES 2.0. More informations about OpenGL ES can be found at http://www.khronos.org/opengles/.
The OpenGL ES state trackers depends on the Gallium architecture and a working EGL implementation.
configure
with --with-state-trackers=egl_g3d,es
and enable the Gallium driver for your hardware.It will install libGLESv1_CM, libGLESv2, libEGL, and one or more EGL drivers for your hardware.
There are some demos in progs/es1/
and progs/es2/
. You can use them to test your build. For example,
$ export EGL_DRIVER=/usr/local/lib/dri/egl_x11_i915.so # specify the EGL driver $ cd progs/es1/xegl $ make $ ./torus
The core of OpenGL ES state trackers is the ES overlay. It is located in
src/mesa/es/
.
The ES overlay uses as much code as possible from Mesa. It has its own glapi XMLs to describe the APIs of OpenGL ES. The ES overlay can be built parallelly with Mesa, and they will give
Library Name | Usage | Source |
libmesagallium.a | OpenGL state tracker | Mesa |
libes1gallium.a | OpenGL ES 1.x state tracker | ES overlay |
libes2gallium.a | OpenGL ES 2.x state tracker | ES overlay |
libglapi.a | OpenGL API | Mesa |
libes1api.a | OpenGL ES 1.x API | ES overlay |
libes2api.a | OpenGL ES 2.x API | ES overlay |
The OpenGL ES state trackers and APIs are then used by src/gallium/state_trackers/es/
to create the final libraries.
The ES overlay uses an additional indirection when dispatching fucntions
Mesa: glFoo() --> _mesa_Foo() ES overlay: glFoo() --> _es_Foo() --> _mesa_Foo()
The indirection serves several purposes
Other than the last case, the ES overlay uses APIspec.xml
to generate functions to check and/or converts the arguments.