Comment 5 for bug 1401968

Revision history for this message
Gerry Boland (gerboland) wrote :

Yeah, I'm puzzled. On desktop, configuring with -DUSE_OPENGLES=1 has everything working. Qt is compiled with GL support on desktop, so this fact confuses me. With that configure flag, Qt does notified it has a GLES context, perhaps it is smart enough to then just use the right shaders & commands. Or else MESA is being forgiving at switching between GL and GLES.

Comparing the apitrace of the old qmake build versus a newer cmake build, this is the main change:

- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0)
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2048, 1024, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL)
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA, 2048, 1024, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL)

Source of this line is the Scenegraph renderer:

void Atlas::bind(QSGTexture::Filtering filtering)

        glTexImage2D(GL_TEXTURE_2D, 0, m_internalFormat, m_size.width(), m_size.height(), 0, m_externalFormat, GL_UNSIGNED_BYTE, 0);

m_internalFormat is wrong after cmake change - it is GL_BGRA, which is the default if a non-GLES context is current.

I compared the build commands between qmake and cmake: http://pastebin.ubuntu.com/9699667/
which shows me that the newer cmake is setting QT_USING_OPENGL and QTMIR_USE_OPENGL (as we'd expect), but qmake was not setting these. qmake worked, perhaps by accident