Screen refresh rate is a little slowly
test environment desc:
- cpu ..... exynos4412 1MHz 4 cores in one chip.
- memory ... DDRII 64bits bandwidth, 2G Bytes, 800MHz.
- QT ........... 4.8.4
- Screen ...... 1024 *600
We use QGraphicsPixmapItem, switch the pixmap(full screen ), to test the refresh rate.
when only existing one PixmapItem, the refresh rate only can reach 35Hz.
when exist 3 QGraphicsPixmapItem, the refresh rate is poorly 12Hz.
our application limit the screen refresh rate should be 70Hz or more.
Is it impossible?any advice?
A few questions:
- Are you compiling for ARMv7 ? You may use ARMv4 while your harware supports ARMv7 instructions
- Do your hardware supports hardware accelerated graphics ? (OpenGL ES / OpenVG) And if yes, are you using it ? That would make a huge difference.
- What is the size of the underlying pixmap ?
Handling graphical items efficiently with a QGraphicsView may be tricky. One existing option is to use QML2, which leverage graphical acceleration and makes touch based application development very easy.
Unfortunately, Qt5 support for embedded OS is poor at this time, and may need some work to achieve integration.
I would strongly recommend having a look at hardware graphics acceleration support. If supported, Qt must be built with OpenGL ES or OpenVG support. Then you would be able to take advantage of such acceleration by embedding your QGraphicsView in a QGLWidget (alternative solutions may exist).
thanks a lot, adrien.
hardware acceleration has not be applied to my project yet, I will try it soon as you suggested.
but, how can OpenGL ES accelerate a Pixmap display?the Pixmap may include transparent color. I can't image the OPENGL 's accelerate process.
If you hardware supports OpenGL accelerated graphics (usually though a dedicated chip on the device), this chip will have much higher transforming and painting performances than the processor, which is not dedicated to this task.
Even the painting of a 2D object can be accelerated as you can with OpenGL, draw "objects" as if they were in 2D. Here you benefit fast interpolation and painting on screen.
I'm not sure a basic QGraphicsView would (fully) benefit such an acceleration. QML1 does for sure, and QML2 (Qt5) is again far better than QML1. QML was actually made partly to cover this need you have. QML can be embedded in a regular Qt UI.
If you still want to only use a QGraphicsView, you want try searching for "QGraphicsView OpenGL" on the web. There is a few examples on how to do it, but I do not assure the performances gain.
My latest solution is bypass the Qt's performance topic. Like video player, I want to seperate the quick-changed BMP generated by system with the ouptput framebuffer of QT. and blend both of them to final LCD display buffer.
the hardware cost will be cutting down(the cost is very important to my project)
I am very curious why there are no chart or test report of QT's performance issues. these things is very important to whom want apply QT to their project.