What I'm seeing is that, in a setup where I have webgl running in a GL layer manager, the webgl canvas is rendered too-small and upside down. It also flickers in such a way that makes me think we're not double-buffering or synchronizing it properly. Webgl seems to work fine in web content loaded in fennec, but in normal fennec we've never had webgl layers directly in a GL layer manager, so I'm not surprised this setup is different. With basic layers, we always read back from the webgl context so we're probably applying some local workaround. I'll try to produce a small .apk testcase. If I can't, I'll send some binaries.
There indeed is no WebGL double-buffering at all at the moment. If your setup includes off-main-thread-compositing, that would explain the flickering. Filed bug 716859.
Not yet, no.
I wasn't really working on that until now, but now I'm starting. assigning to myself.
On EGL, we are currently always using PBuffers. I get this message: WARNING: Failed to create pbuffer, trying power of two dims: file /home/bjacob/mozilla-central/gfx/gl/GLContextProviderEGL.cpp, line 1089 Indeed, NPOT PBuffers aren't universally supported. That would explain the vertical squeezing, and a PBuffer-specific issue could also explain the flipping, like in bug 702058. Like for that bug, the solution would be to switch to using to using a FBO backed by a texture. Indeed, the GLES2 spec at least guarantees that in the 2D, no mipmap, clamp-to-edge case, NPOT textures must be supported. Don't know yet about the other issues.
5 years ago