1OpenGL ES 2========= 3 4Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0. More information about 5OpenGL ES can be found at https://www.khronos.org/opengles/. 6 7OpenGL ES depends on a working EGL implementation. Please refer to 8:doc:`Mesa EGL <egl>` for more information about EGL. 9 10Build the Libraries 11------------------- 12 13#. Run ``meson configure`` with ``-D gles1=true -D gles2=true`` and 14 enable the Gallium driver for your hardware. 15#. Build and install Mesa as usual. 16 17Alternatively, if XCB-DRI2 is installed on the system, one can use 18``egl_dri2`` EGL driver with OpenGL|ES-enabled DRI drivers 19 20#. Run ``meson configure`` with ``-D gles1=true -D gles2=true``. 21#. Build and install Mesa as usual. 22 23Both methods will install libGLESv1_CM, libGLESv2, libEGL, and one or 24more EGL drivers for your hardware. 25 26Run the Demos 27------------- 28 29There are some demos in ``mesa/demos`` repository. 30 31Developers 32---------- 33 34Dispatch Table 35~~~~~~~~~~~~~~ 36 37OpenGL ES has an additional indirection when dispatching functions 38 39:: 40 41 Mesa: glFoo() --> _mesa_Foo() 42 OpenGL ES: glFoo() --> _es_Foo() --> _mesa_Foo() 43 44The indirection serves several purposes 45 46- When a function is in Mesa and the type matches, it checks the 47 arguments and calls the Mesa function. 48- When a function is in Mesa but the type mismatches, it checks and 49 converts the arguments before calling the Mesa function. 50- When a function is not available in Mesa, or accepts arguments that 51 are not available in OpenGL, it provides its own implementation. 52 53Other than the last case, OpenGL ES uses ``APIspec.xml`` to generate 54functions to check and/or converts the arguments. 55