Ön Fri, 22 Mar 2019 17:06:32 +0100, Allan Sandfeld Jensen wrote:
Sounds like XCB isn't as well optimized as Qt is
Nice joke - but only when X11 falls back on some software emulation it might be the case, that the Qt implementation is better than that one.
Note though, that there are number of techniques to make the native painting faster, such as always using qpixmap so the images stays buffered on the server side.
Unfortunately after removing the X11 paint engine with Qt5 the Qt development started to rely on the fact, that QPixmap::toImage() is a cheap operation - what is not true anymore since Qt 5.10 and QT_XCB_NATIVE_PAINTING. F.e. in qquickpixmapcache.cpp you find code like this for creating textures for QQmlImageProviderBase::Pixmap: QQuickTextureFactory::textureFactoryForImage( pixmap.toImage() ) ); Here Qt/Quick is affected, but I have seen stuff like this in the Qt/ Charts module and there are probably more ...
You might be able to massage your program to be faster with native painting, but the whole reason for switching to Qt side painting was that for the average application developer Qt side was faster.
Not sure what "average" means, but when talking about vector graphics this nothing but wrong. I had posted statistics some years ago showing how much slower software rendering for the type of use case you have with Qwt: my test was about creating the same QImage using QPainter::drawPolyline in 3 ways: - Drawing to a QImage ( = raster paint engine ) - Drawing to a QPixmap + copying it out to a QImage ( X11 paint engine ) - Drawing to an FBO + copying it out to a QImage ( OpenGL paint engine ) I don't have the numbers anymore, but IIRC on my box OpenGL/X11 were > 10 times faster than what the raster paint engine does - even if the numbers include an irrelevant QPixmap -> QImage operation for OpenGL/X11 and the time for the QImage upload for the raster paint engine path is missing. Uwe _______________________________________________ Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development