QT OpenGL ES dramatically slower than software rendering on i.MX6 / Vivante board
I'm using the Variscite VAR-SOM-SOLO running an i.MX6... 1GHz single core, Vivante GC 880 + Vivante GC 320.
This is running Yocto with OpenGL enabled, configured to run without X11 or Wayland or anything. The recipe is provided by Variscite and specifically states support for Qt5 sans X11.
My Qt app is doing 2d rendering only, and is switchable between QOpenGLWidget and QWidget for the canvas. Example draw operations are via fillPath, drawLine, drawText.
The app runs fine on the target.
If I compile with software rendering (QWidget) and set QT_QPA_PLATFORM to linuxfb, the paint operation takes 8-9ms.
The widget update/paint is called on a 60Hz timer, and it achieves this performance very easily.
If I compile Qt to use the QOpenGLWidget, running with QT_QPA_PLATFORM=linuxfb gives me a grey screen only. Setting QT_QPA_PLATFORM=eglfs gives me a working application. Anti-aliasing in the text looks worse than software, but it essentially works. However! Draw time from the paint function alone is 40ms, so the FPS achievable is very poor. Mouse movement is even slower, <10fps.
So far as I can tell, OpenGL ES is enabled and should be operating. Yocto and the Qt layer enable Opengl. The Vivante drivers are present in the build and kernel.
Where do I begin debugging this? How can I be sure that the opengl is being correctly accelerated? Is it possible that it is falling back to a slow emulation mode of the opengl functions?
Is the lack of X11 or similar a potential cause?
Unfortunately I'm still going in circles with this...
Does anyone know a way of verifying at runtime whether OpenGL ES is operating correctly in Qt?