aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>2012-09-07 12:31:43 +0200
committerQt by Nokia <qt-info@nokia.com>2012-09-10 14:24:05 +0200
commitce72af3c7564b68b637a1f130524572aeec66395 (patch)
tree49a38137e3f15866432c070ef14219e1fee0a263 /src
parent7ac98d7c92b69aa72069fdd8f6be3edbbd3324a2 (diff)
Add QML_RENDER_TIMING output for the single-threaded case
Change-Id: Ia3958c7c26bf2fd9dd72a07fc6f5ff3a28b0a349 Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickwindowmanager.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/quick/items/qquickwindowmanager.cpp b/src/quick/items/qquickwindowmanager.cpp
index 7ddedad073..930e2a945d 100644
--- a/src/quick/items/qquickwindowmanager.cpp
+++ b/src/quick/items/qquickwindowmanager.cpp
@@ -58,6 +58,8 @@
QT_BEGIN_NAMESPACE
+DEFINE_BOOL_CONFIG_OPTION(qquick_render_timing, QML_RENDER_TIMING)
+
extern Q_GUI_EXPORT QImage qt_gl_read_framebuffer(const QSize &size, bool alpha_format, bool include_alpha);
/*!
@@ -232,9 +234,22 @@ void QQuickTrivialWindowManager::renderWindow(QQuickWindow *window)
QQuickWindowPrivate *cd = QQuickWindowPrivate::get(window);
cd->polishItems();
+
+ int renderTime, syncTime;
+ QTime renderTimer;
+ if (qquick_render_timing())
+ renderTimer.start();
+
cd->syncSceneGraph();
+
+ if (qquick_render_timing())
+ syncTime = renderTimer.elapsed();
+
cd->renderSceneGraph(window->size());
+ if (qquick_render_timing())
+ renderTime = renderTimer.elapsed() - syncTime;
+
if (data.grabOnly) {
grabContent = qt_gl_read_framebuffer(window->size(), false, false);
data.grabOnly = false;
@@ -245,6 +260,13 @@ void QQuickTrivialWindowManager::renderWindow(QQuickWindow *window)
cd->fireFrameSwapped();
}
+ if (qquick_render_timing()) {
+ const int swapTime = renderTimer.elapsed() - renderTime;
+ qDebug() << "- Breakdown of frame time; sync:" << syncTime
+ << "ms render:" << renderTime << "ms swap:" << swapTime
+ << "ms total:" << swapTime + renderTime << "ms";
+ }
+
// Might have been set during syncSceneGraph()
if (data.updatePending)
maybeUpdate(window);