With Attachment 591529 [details] [diff], Bug 720467 applied, the WebGL demo at http://spidergl.org/example.php?id=1 on XUL Fennec on a Nexus S causes GLContext::fReadPixels to be called with format GL_BGRA and type GL_UNSIGNED_BYTE, resulting in GL_INVALID_OPERATION. Since that patch doesn't change the logic used to choose the format for fReadPixels, we have a bug somewhere else.
According to specs for ES extensions: EXT_bgra explicitly adds support for GL_BGRA+GL_UNSIGNED_BYTE readPixels. EXT_read_format_bgra and IMG_read_format allow for the auxiliary format discovery for BGRA+UBYTE via GL_IMPLEMENTATION_COLOR_READ_FORMAT/TYPE.
Created attachment 591633 [details] [diff] [review] Add correct logic for enabling BGRA readPixels for GLES
With this patch applied, I'm still seeing the same problem. GL_IMPLEMENTATION_COLOR_READ_FORMAT and TYPE are BGRA and UNSIGNED_BYTE on this device, so it still tries to use GL_BGRA and causes a GL_INVALID_OPERATION error. So we seem to be running into a driver bug.