[Interest] compiling qt with eglfs

Ganesh S ganesh.sathyanarayanan at gmail.com
Thu Nov 15 09:11:23 CET 2012


Hi.

There are a couple of things I believe are related and would therefore help
this discussion. Please let me know if you think this is a different
topic, in which case I will open a separate mailing thread. Both of these
are related to WebGL not working with Qt5 Beta, due to a lot of EGL
surfaces (NativeWindow) being created with the eglfs plugin

1) a discussion that happened here --
http://qt-project.org/forums/viewthread/20188

2) a mail that I posted to [webkit-qt] community, but did not receive any
response:

I am running Qt5-Beta1 on mips platform using eglfs plugin.

I am trying to run a simple WebGL example such as
http://martinsikora.com/dart-webgl-simple-demo

However, in the section where am supposed to see an animated triangle, I
see a static image with strange symbols (such "&", mouse cursors etc). The
image isn't random - always the same image appears.

I do not use the webkit that comes with the Qt source archive, although I
tried that, and the issue occurred in that too. I use a particular version
of webkit from the mainline stream (webkit.org). I have also tried the very
latest git-clone of qt5, and its webkit, and that has the issue too.

Note that when I build the same webkit source-base as above with a Qt 4.8
installation (QWS mode with eglnullws), WebGL works fine, and am able to
see the animated triangle. Other WebGL demos also seem to run okay.

So one would think the issue does not lie in webkit, but I tried to debug
the issue to see the call stack and noticed the below.

For normal update of the WebView:
QGLContext::makeCurrent() ==> QOpenGLContext::makeCurrent() ==>
QEGLPlatformContext::makeCurrent() ==> eglMakeCurrent()
This is followed by calls to eglSwapBuffers() in a similar call hierarchy
and then doneCurrent()

For the EglFSWindow that is opened to render the WebGL, I was able to
observe such a call hierarchy only for makeCurrent(). There were no
following calls to swapBuffers().
GraphicsContext3DPrivate::makeCurrentIfNeeded() ==>
QOpenGLContext::makeCurrent() ==> QEGLPlatformContext::makeCurrent() ==>
eglMakeCurrent()

The call to the ultimate eglMakeCurrent() does indeed return true. I
grepped for swapBuffers() within webkit, but could not find one for the Qt
platform.

I am not exactly sure how to proceed, as calls to
m_platformContext->swapBuffers() manually leads to hangs and/or crashes.
If you have faced a similar issue, or have any suggestions for me to go
fwd, please let me know



On Sat, Nov 10, 2012 at 5:25 AM, Girish Ramakrishnan
<girish at forwardbias.in>wrote:

> On Fri, Nov 9, 2012 at 3:53 PM, Girish Ramakrishnan
> <girish at forwardbias.in> wrote:
> > On Fri, Nov 9, 2012 at 4:22 AM, pritam.ghanghas at gmail.com
> > <pritam.ghanghas at gmail.com> wrote:
> >>
> >>
> >> On Fri, Nov 9, 2012 at 11:16 AM, pritam.ghanghas at gmail.com
> >> <pritam.ghanghas at gmail.com> wrote:
> >>>
> >>>
> >>>
> >>> On Thu, Nov 8, 2012 at 8:06 PM, pritam.ghanghas at gmail.com
> >>> <pritam.ghanghas at gmail.com> wrote:
> >>>>
> >>>>
> >>>>
> >>>> On Thu, Nov 8, 2012 at 8:00 PM, Samuel Rødal <samuel.rodal at digia.com>
> >>>> wrote:
> >>>>>
> >>>>> On 11/08/2012 01:55 PM, pritam.ghanghas at gmail.com wrote:
> >>>>> > I am still stuck with qt 4.8.3 with qpa. It always compiles, but I
> >>>>> > never
> >>>>> > got it to work.
> >>>>> > Now when i try the application its failing at load time itself
> >>>>> > # ./hellogl_es2 -qpa -platform egl
> >>>>> > Failed to load platform plugin "egl". Available platforms are:
> >>>>> > Minimal
> >>>>> >
> >>>>> > if I try Minimal, I get a segfault.
> >>>>> > ./hellogl_es2 -qpa -platform Minimal
> >>>>> > Segmentation fault
> >>>>> >
> >>>>> > backtrace from gdb shows that it crashes in
> >>>>> > QGLContext::chooseContext(QGLContext const*) ()
> >>>>>
> >>>>> The minimal plugin doesn't support OpenGL.
> >>>>>
> >>>>> > I have no idea what to do next. why didn't I get eglfs plugin when
> I
> >>>>> > had
> >>>>> > specified -egl in configure.
> >>>>>
> >>>>> Try specifying -eglfs and -opengl es2 when running configure and see
> >>>>> what the configure output says.
> >>>>>
> >>> -eglfs was not recognized by configure as a valid option.
> >>>>
> >>>> I will try that tomorrow. I had tried specifying -qpa eglfs. But that
> >>>> didnt help.
> >>>> I compiled by actually going to  src/plugins/platforms/eglfs.
> >>>> Surprisingly makefile was there. The build system ran qmake on it, but
> >>>> somehow never ran make.
> >>>> Right now I dont have board to test it. I will get board again
> tomorrow.
> >>>> I will test it and let you know.
> >>>
> >>> I have the plugin manually compiled. It loads but fails to create
> surface.
> >>>  Could not create the egl surface: error = 0x300b
> >>> I think I need to do some platform specific patching in plugin. I am
> >>> looking into that now.
> >>
> >>
> >> Finally I got graphcis working with qt 4.8.3 + egl + opengl with a
> little
> >> bit of custom platform initialization in qeglfsscreen.cpp. But now I
> have a
> >> new problem. No input in qpa application, neither mouse nor keyboard.
> >> I googled a little bit and found that I should supply -plugins manually
> >> while running application.
> >>  ./animatedtiles -plugin LinuxInputMouse:/dev/input/mouse0  -qpa
> -platform
> >> EglFS
> >> Still no cursor or mouse input. Any ideas ?
> >>
> >
> > eglfs supports display of mouse cursor only in Qt.
>
> s/Qt/Qt5 :)
>
> Girish
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20121115/35f34d4f/attachment.html>


More information about the Interest mailing list