[Interest] [qt-android] Is it possible to create OpenGL ES 2 context even when ES 3 is available?

Agocs Laszlo laszlo.agocs at theqtcompany.com
Thu Mar 12 10:42:37 CET 2015


Qt does exactly what you ask for: it requests a 2.0 context. Now since implementations are free to return a later version that is backwards compatible with the requested, getting a 3.0 or 3.1 context is perfectly fine (and is the standard behavior you will get with any driver that supports ES 3.0 and newer).
There is no reason for GL_OES_EGL_image_external not to work with ES 3.x, as long as you use ES2-style (ESSL1) shaders. The typical problem is that drivers are free to reject it in ESSL3 shaders, unless they also support the fairly fresh GL_OES_EGL_image_external_essl3.

Now, it could be that your particular driver disables the extension completely in non-2.0 contexts (regardless of the shading language version in use), but there is no solution to that since there is no standard way to force a given context version.

Best regards,
Laszlo


From: interest-bounces+laszlo.agocs=theqtcompany.com at qt-project.org [mailto:interest-bounces+laszlo.agocs=theqtcompany.com at qt-project.org] On Behalf Of Liang Jian
Sent: 12. mars 2015 08:02
To: interest at qt-project.org
Subject: [Interest] [qt-android] Is it possible to create OpenGL ES 2 context even when ES 3 is available?

     Now qt-android will create an OpenGL ES 3 context if that ES3 is supported by the devices even if I have call QSurfaceFormat::setVersion(2,0). Is it a way to just create the specific version I wanted using QOpenGLContext?
    The reason why I care about that is: I need to use SurfaceTexture in my android app, and that require GL_OES_EGL_image_external extenstion, but GL_OES_EGL_image_external is written against OpenGL ES 2. If I create a OpenGL ES 3 context, some GPU (such as PowerVR rogue han) driver will fail to compile my fragment shader if I add the line to my fragment shader:
    #extension GL_OES_EGL_image_external : require
    In this case I must create a OpenGL ES 2 context to make it work.
    I think qtmultimedia for android will also suffer from this because it will also use GL_OES_EGL_image_external. In fact I tried to deloy qmlvideo example to my Meizu MX4 (PowerVR Rogue Han) it didin't work, But I didn't see the shader compilation error from debug output.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20150312/56f6df49/attachment.html>


More information about the Interest mailing list