On Apr 12, 2013, at 9:26 AM, Michael Andersen <mich...@steelcode.com>
 wrote:

> Is vsync enabled in your driver? Sounds like it might not be. If not, then Qt 
> Quick 2.0 will render at 100% cpu rendering maybe many thousands of frames 
> per second, even though you only see 60 of them.
> 
> Unfortunately, VSync is enabled, that would have been a good explanation. 

Does it get any better if you switch to Unity 2D, the non-fancy one? We have 
registered some issues with the fancier window managers when using OpenGL.

846cf1a13f80fe4590cc9ad4d9972d7a173accd6 to QtBase, which is going into 5.1, 
resize issues on gnome for instance.

You could also try to set the envvar:

QML_BAD_GUI_RENDER_LOOP=1 

It switches the render loop to a single-threaded, timer-based loop which 
updates every 16 ms, not in sync with vsync. The default on linux/X11 is to use 
a dedicated render thread, advance animations once per frame and rely on vsync 
to be throttled. 

cheers,
Gunnar

> 
> I am using the Nvidia binary drivers (v304.51) so in order to double check 
> that applications actually *were* vsynced, I ran glxgears. Turns out that 
> glxgears does the same thing: no repainting while dragging and it lags the 
> whole PC when you drag the app. This is not a small PC, I have a GTX 560 Ti, 
> 32GB of ram and an i7 3930.. why oh why is glxgears lagging...
> 
> For want of another data point, I ran minecraft, yes I know its a different 
> language and all that, but it does have an OpenGL context... and it doesn't 
> lag the pc at all while the window is being dragged.
> 
> So I am not sure that this is really Qt's fault, except that the QtQuick 1.1 
> application did not exhibit the same problems, and it does seem possible to 
> make an OpenGL application that repaints while the window is moved.
>  
> Any ideas?
> 
> 
> cheers,
> Gunnar
> 
> >
> > Here is a simple reproducer of the problem, I create a QtQuick2 application 
> > in Qt Creator 2.7. I adjust the QML to look like this:
> >
> > import QtQuick 2.0
> >
> > Rectangle {
> >     width: 400
> >     height: 400
> >     Rectangle {
> >         id: redsquare
> >         color: "red"
> >         width: 50
> >         height: 50
> >         x: 50
> >         y: 50
> >     }
> >     RotationAnimation {
> >         loops: Animation.Infinite
> >         target: redsquare
> >         properties: "rotation"
> >         from: 0
> >         to: 360
> >         duration: 300*5
> >         direction: RotationAnimation.Clockwise
> >         running: true
> >     }
> > }
> >
> > My main.cpp is the default, but that looks like this:
> >
> > #include <QtGui/QGuiApplication>
> > #include "qtquick2applicationviewer.h"
> >
> > int main(int argc, char *argv[])
> > {
> >     QGuiApplication app(argc, argv);
> >
> >     QtQuick2ApplicationViewer viewer;
> >     viewer.setMainQmlFile(QStringLiteral("qml/SimpleRotator/main.qml"));
> >     viewer.showExpanded();
> >
> >     return app.exec();
> > }
> >
> > I am new to Qt, so perhaps I am doing something wrong with my animation, 
> > but I have tried a couple other methods of animating and they all lag 
> > equally badly. The PC I develop on is quite a monster, so if it is lagging 
> > on this, I hate to think what it's going to do on my clients' laptops.
> >
> > Anyone have any ideas?
> >
> > Regards
> > Michael
> > _______________________________________________
> > Interest mailing list
> > Interest@qt-project.org
> > http://lists.qt-project.org/mailman/listinfo/interest
> 
> 

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to