| libAgl2 provides software GL ES 2.0 implementation using Pixelflinger2 in external/mesa3d | 
 |  | 
 | To build, enable Android.mk, which builds libGLES_android.so, then replace the one built from libAgl in system/lib/egl. | 
 | ES 1.0 functions are not implemented and will cause exit, so do not setprop debug.egl.hw 0 until launcher is loaded. | 
 |  | 
 | All functions have little to none error checking. | 
 | Not thread safe, Pixelflinger2 uses some static data. | 
 |  | 
 | Most shader functions are implemented, however, most Get* functions for shaders/programs/uniforms/attribs are not. | 
 | No name system for shaders/programs, just using the pointers as names. | 
 |  | 
 | Basic glTexImage2D, glTexSubImage2D, glCopyImage2D and glCopySubImage2D are implemented, with a range of 8/16/24/32bpp formats. | 
 | Cube map support is minimal. No mipmapping. | 
 | TexParameter is mostly implemented, supports texcoord wrap modes, and only linear for both min and mag, or nearest for both min and mag filtering. | 
 | Texture names are implemented, but bad. | 
 |  | 
 | Frame buffer and render buffers are not implemented. | 
 |  | 
 | Depth and stencil are implemented, but not tested. | 
 | Blending seems to work. | 
 | Colorbuffer supports RGBA_8888 and RGB_565. | 
 |  | 
 | Vertex buffer objects are implemented. | 
 | Some GL_TRIANGLES and GL_TRIANGLE_STRIPS modes for glDrawArrays and glDrawElements are implemented, but vertex order is probably wrong so culling is disabled. | 
 |  | 
 | Basic apps should work, and some libhwui should work, except for frame buffer operations, which will cause exit. |