[Interest] [Qt3D] stability and performance issues with Qt 5.8

Xavier Bigand flamaros.xavier at gmail.com
Fri Oct 21 18:15:23 CEST 2016


I am actually use Qt 5.8 branch from Git, I have some performances and
stability regression compared to the 5.7 release.

I can't run my application in Debug mode (tested with mingw and VS 2013)
with both Qt versions (5.7 and 5.8=), it runs in release but behavior
change fast when I do very small changes in my code.
It seems that the version 5.7 is able to support more complexe scenes than
Qt 5.8 and performances are twice better.

As much as I can tell for the moment stability/performances issues cames
from threading management.


When trying to load a scene in debug mode with Qt 5.8 it often break in T
 QGenericAtomicOps::load(const T &_q_value) from a pooled thread.

Here is the full call stack :
> Qt53DRenderd.dll!QGenericAtomicOps<QAtomicOpsBySize<4> >::load<int>(const
int & _q_value) Line 90 C++
  Qt53DRenderd.dll!QBasicAtomicInteger<int>::load() Line 99 C++
  Qt53DRenderd.dll!QtPrivate::RefCount::isShared() Line 101 C++
  Qt53DRenderd.dll!QVector<Qt3DRender::Render::ClearBufferInfo>::isDetached()
Line 108 C++
  Qt53DRenderd.dll!QVector<Qt3DRender::Render::ClearBufferInfo>::detach()
Line 384 C++
  Qt53DRenderd.dll!QVector<Qt3DRender::Render::ClearBufferInfo>::begin()
Line 204 C++
  Qt53DRenderd.dll!Qt3DRender::Render::FrameGraphVisitor::visit::__l78::<lambda>()
Line 326 C++
  Qt53DRenderd.dll!Qt3DRender::Render::GenericLambdaJob<void <lambda>(void)
>::run() Line 78 C++
  Qt53DCored.dll!Qt3DCore::AspectTaskRunnable::run() Line 91 C++
  Qt5Cored.dll!QThreadPoolThread::run() Line 99 C++
  Qt5Cored.dll!QThreadPrivate::start(void * arg) Line 380 C++
  [External Code]
  [Frames below may be incorrect and/or missing, no symbols loaded for
kernel32.dll]

It breaks because the QBasicAtomicInteger pointer is allready free
(0xFEEEFEEE).

And for performance issues it seems to come from synchronization between
thread, so I am trying to reduce the number of Qt3D objects
(QShaderProgram, Texture,...) by sharing them, but doing this can lead in
rendering issues or crashs.


I want to help to improve stability (first) and performances, but I don't
have a great experience in thread debugging and on how the Qt3D backend
works. So I would be happy to get some hints to improve my feedbacks or
doing more to help.


-- 
Xavier
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20161021/43ce822a/attachment.html>


More information about the Interest mailing list