From ce72af3c7564b68b637a1f130524572aeec66395 Mon Sep 17 00:00:00 2001 From: Thomas McGuire Date: Fri, 7 Sep 2012 12:31:43 +0200 Subject: Add QML_RENDER_TIMING output for the single-threaded case Change-Id: Ia3958c7c26bf2fd9dd72a07fc6f5ff3a28b0a349 Reviewed-by: Gunnar Sletta Reviewed-by: Sean Harmer --- src/quick/items/qquickwindowmanager.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src') 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); -- cgit v1.2.3