When --in-process-webgl is used in Chromium in conjunction with ANGLE, an assertion failure is triggered because GL_DEPTH_COMPONENT is an invalid enum to pass to glRenderbufferStorage. We need to pass GL_DEPTH_COMPONENT16 when running on top of an OpenGL ES 2.0 implementation. We need to check the GL implementation in use (app/gfx/gl_implementation.h, GetGLImplementation() and determine which enum to send down based on whether EGLGLES2 is in use.
There are additional problems when running on top of ANGLE (or any non-desktop GL implementation). The shader validator needs to be changed to generate GLSL ES rather than GLSL. There may be additional problems. Changing the synopsis.
In the initialization, code like glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); glEnable(GL_POINT_SPRITE); should only be executed if the backend is desktop GL.
Created attachment 73446 [details] Patch
Comment on attachment 73446 [details] Patch R=me one suggestion: consider making the isGLES2 flag a member and check that instead of having checks for gfx::GetGLImplementation() everywhere.
(In reply to comment #4) > one suggestion: consider making the isGLES2 flag a member and check that instead of having checks for gfx::GetGLImplementation() everywhere. Thanks, that's a good suggestion. I'll do that in the landed patch.
Committed r71705: <http://trac.webkit.org/changeset/71705>
http://trac.webkit.org/changeset/71705 might have broken GTK Linux 64-bit Debug
Committed r71942: <http://trac.webkit.org/changeset/71942>