Performance of OpenGL ES 2 in Qt for X11
-
Hi! I compiled Qt for X11 with OpenGL ES 2 support. I then tried to run the hellogl_es2 examples application to test OpenGL ES 2 performance. On the framebuffer it seemed quite OK, but here in X11 it's bad.
hellogl_es2 reports a frame rate of 30 frames per second when the application is in fullscreen, which seems quite OK to me, but CPU occupation on the behalf of the application is over 60% and 20% for Xorg, and the rendering performance is really bad. The animation is slow and not smooth at all indeed.
What may be the cause of this? My OpenGL implementation and EGL implementation seems OK on the framebuffer (Qt for Embedded Linux). Maybe the problem is that I'm lacking DRI (I built this Linux myself).
Thanks for any suggestion. -
Hello Luc4,
can you tell me please if you solve your problem, and how? -
Unfortunately I don't think it was possible to solve. I suppose some drivers where needed to avoid the overhead of X and directly accessing the hardware. The only possible way I could find was to implement a custom QScreen driver for Qt for Embedded Linux using a custom EGL implementation on the framebuffer and avoid X server completely. That way performance was good.
-
how can you implement a custom QScreen driver for Qt for Embedded Linux?
-
Did you read the documentation for the QScreen class and how to implement a QScreen driver with OpenGL support?
-
Do you mean that I need to creat a subclass for QScreen?
Then how can I connect this subclass to opengl, and how can I connect my application to this screen driver? -
Again, read the documentation, everything is explained there. Yes, you'll have to subclass some classes. When running an application you'll need to specify the Qt screen driver to use. The EGL library is commonly used to setup the context for OpenGL. Unfortunately there is no standard defined for surface management, so it depends on your EGL implementation. Look for the powervr or the simplegl drivers.
-
Tnank you very much for your help,
This work with Qt embedded linux, and I use Qt lighthouse, so it does not really help me here. I need to figure out how to use the OpenGL on lighthouse system...