At the moment, the ANGLE shader compiler used in GraphicsContext3D for cairo based ports is always speaking GLSL, no matter WebKit is configured to use a GLES2 or an GL backend. This is causing some problems such as that the "precision mediump float;" bit in the fragment shader template used by TextureMapper(see TextureMapperShaderProgram.cpp) gets ignored when compiled by ANGLE, causing problems with some graphics drivers because that will mean that float precision for fragment shaders won't be explicitly specified, which seems to be a requirement for GLES2 (even if some implementations are more relaxed about it).
The solution seems to be as simple as properly configuring the ANGLE compiler when creating the graphics context, to use SH_ESSL_OUTPUT instead of SH_GLSL_OUTPUT when GLES2 is used.
Created attachment 204829 [details]
Here comes the patch. It addresses the issue in a similar fashion to the Qt and EFL ports, and also clearly fixes an obscure issue for us as well, so I hope it'll be the right one.
Now kindly asking for review...
Committed r151676: <http://trac.webkit.org/changeset/151676>
*** Bug 117804 has been marked as a duplicate of this bug. ***