[Development] Scenegraph Triple Buffering

Dietrich.Gossen at conti-engineering.com Dietrich.Gossen at conti-engineering.com
Tue Jul 3 18:12:58 CEST 2012


Hi,

I set the Samples to 1.
format.setSamples(1);

The rotation looks better now, but still not perfect.
I am not sure how to interpret the output of QML_RENDER_TIMING=1

This is how the output looks like (during rotation):



Do you know any other performance improvements, regarding QML?

Thanks.
Dietrich



Von:    <gunnar.sletta at nokia.com>
An:     <Dietrich.Gossen at conti-engineering.com>
Kopie:  <development at qt-project.org>
Datum:  28.06.2012 13:49
Betreff:        Re: [Development] Scenegraph Triple Buffering




On Jun 28, 2012, at 12:57 PM, ext Dietrich.Gossen at conti-engineering.com 
wrote:

> The used hardware is: i.MX6 Sabrelite (with powerful gpu from vivante) 
> Used Qt-Version: 5.0.0 Alpha with eglfs plugin 
> 
> The Qt Application contains scaling, rotations and moving of images. The 
application is a comination of QML and C++. 
> I am searching for the bottleneck. 
> 
> The hellogl_es2 example is running with 75 fps (with vsync on). But 
hellogl_es2 is not using QML. 

It also doesn't try to enable multisampling, QQuickView does. Depending on 
the hardware this can have significant impact on performance. The way to 
change it right now would be to change the requested format we return in 
src/quick/scenegraph/qsgcontext.cpp in the function 
QSGContext::defaultSurfaceFormat(). 

If you do not want to change the source code, of Qt it is possible to 
write an adaptation plugin for the scene graph to request (among other 
things) a different surface format, but to just check the impact, it is 
not worth it :)

> My first idea was to enable triple buffering, and compare the result to 
double buffering with vsync. 

The threaded renderer, which you should already hit by using the EGLFS 
plugin, does animations and rendering/swap in different threads, so the 
overall hit of doublebuffering with a potential wait-for-swap is already 
greatly reduced as the next frame can be prepared while the render thread 
is waiting for swap.

You can try the environment variable QML_CANVAS_TIMING=1 which prints out 
which part of the render loop is taking up time. 

cheers,
Gunnar

> Best regards 
> 
> Dietrich 
> 
> 
> 
> Von:        <gunnar.sletta at nokia.com> 
> An:        <Dietrich.Gossen at conti-engineering.com> 
> Kopie:        <development at qt-project.org> 
> Datum:        28.06.2012 11:39 
> Betreff:        Re: [Development] Scenegraph Triple Buffering 
> 
> 
> 
> 
> On Jun 28, 2012, at 10:58 AM, ext Dietrich.Gossen at conti-engineering.com 
wrote:
> 
> > Hi, 
> > 
> > There is some Qt 5.0 documentation available about 
QSurfaceFormat::SwapBehavior. There is a constant called 
QSurfaceFormat::TripleBuffer . 
> > Is this feature already implemented and tested in Qt 5 Alpha? 
> 
> This parameter is picked up by the platform's OpenGL implementation if 
anything, but none of our desktop backends currently make use of this as 
the buffering policy is typically decided for us by the system. This is 
mostly a hint to be picked up by EGL implementations where applicable.
> 
> > The reason I am asking, is because we are facing the typical issues 
with Double buffering and vsync turned on. 
> > The fps drops to 30. 
> 
> What system / setup is this and what are you trying to draw? There is no 
reason why double buffering combined with vsync should result in 30FPS, 
unless each frame takes in the range 17-33ms to draw. Does this happen 
also for a very simple scene?
> 
> cheers,
> Gunnar
> 
> 
> > Thanks 
> > 
> > Best regards 
> > 
> > Dietrich Gossen
> > _______________________________________________
> > Development mailing list
> > Development at qt-project.org
> > http://lists.qt-project.org/mailman/listinfo/development
> 
> 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20120703/afa931cb/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: frametime.txt
URL: <http://lists.qt-project.org/pipermail/development/attachments/20120703/afa931cb/attachment.txt>


More information about the Development mailing list