CPU 在多个 QQuickWindows 上调用 update() SLOT 时负载急剧增加

CPU load strongly increasing when calling update() SLOT on several QQuickWindows

我发现我的应用程序在多个 QQuickWindows 上调用 update() SLOT 时及时消耗越来越多的 CPU 电量。

这是一个简单的测试程序:

    import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Window 2.2

ApplicationWindow {visible: true; width: 640; height: 480;
    Window{  height: 100;  width: 100; visible: true; objectName: "w1"; id:w1; }
    Window{  height: 100;  width: 100; visible: true; objectName: "w2"; id:w2; }
    Window{  height: 100;  width: 100; visible: true; objectName: "w3"; id:w3; }

    Timer {
        interval: 30
        repeat: true
        running: true

        onTriggered: {
            w1.update();
            w2.update();
            w3.update();
        } 
    }
}

如果我用 Loader 完全重新加载 QQuickWindows,一切都会重置并且 CPU 负载从头开始增加。

此问题已使用以下两个系统进行测试:

我需要快速解决这个问题!!!我已经尝试定期调用 releaseResources() 方法和 [=15= 的 resetOpenGLState() 方法].

另外非常有趣的是,当我在我的 main.cpp 中应用 putenv("LIBGL_ALWAYS_SOFTWARE=1") 时,这个问题就消失了,我的 CONSTANT 很低 cpu用法。但在我的实际应用程序中,我需要硬件渲染,所以它不是我的选择。

任何人都可以测试这个问题或给我一个建议吗?

我已经在我的 Ubuntu 14.04 + Qt5.4 + amd proprietary drives 上测试了您的代码,CPU 负载没有任何增加(它保持不变)。每 30 毫秒重新加载一次图像,帧速率为 33.3 fps。我猜你使用的是开源驱动器,它在渲染方面不太好。尝试在我们的 amd 机器上使用 amd 专有驱动器。