From 9e5ed7b905bc95d5e8a17686e6f9cfea31cf3117 Mon Sep 17 00:00:00 2001 From: samcake Date: Wed, 28 Feb 2018 10:48:35 -0800 Subject: [PATCH] Add more timing stats in explanded mode --- interface/resources/qml/Stats.qml | 6 +++++- interface/src/ui/Stats.cpp | 29 +++++++++++++++++++++++++++++ interface/src/ui/Stats.h | 2 ++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml index 4626d9bcda..a12bd4b2c0 100644 --- a/interface/resources/qml/Stats.qml +++ b/interface/resources/qml/Stats.qml @@ -257,7 +257,11 @@ Item { id: octreeCol spacing: 4; x: 4; y: 4; StatText { - text: "Engine: " + root.engineFrameTime.toFixed(1) + " ms" + text: "Render Engine: " + root.engineFrameTime.toFixed(1) + " ms" + } + StatText { + visible: root.expanded + text: root.renderEngineStats } StatText { text: "Batch: " + root.batchFrameTime.toFixed(1) + " ms" diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index bbc8de5987..ff42ed09e7 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -502,10 +502,39 @@ void Stats::updateStats(bool force) { _gameUpdateStats = ""; emit gameUpdateStatsChanged(); } + + itr = allRecords.find("/paintGL/display/EngineRun/Engine"); + std::priority_queue renderEngineStats; + if (itr != allRecords.end()) { + float dt = (float)itr.value().getMovingAverage() / (float)USECS_PER_MSEC; + _renderEngineStats = QString("/render = %1 ms").arg(dt); + + QVector categories = { "RenderMainView", "SecondaryCameraJob", "UpdateScene"}; + for (int32_t j = 0; j < categories.size(); ++j) { + QString recordKey = "/paintGL/display/EngineRun/Engine/" + categories[j]; + itr = allRecords.find(recordKey); + if (itr != allRecords.end()) { + float dt = (float)itr.value().getMovingAverage() / (float)USECS_PER_MSEC; + QString message = QString("\n %1 = %2").arg(categories[j]).arg(dt); + renderEngineStats.push(SortableStat(message, dt)); + } + } + while (!renderEngineStats.empty()) { + SortableStat stat = renderEngineStats.top(); + _renderEngineStats += stat.message; + renderEngineStats.pop(); + } + emit renderEngineStatsChanged(); + } else if (_renderEngineStats != "") { + _renderEngineStats = ""; + emit renderEngineStatsChanged(); + } } else if (_showGameUpdateStats) { _showGameUpdateStats = false; _gameUpdateStats = ""; + _renderEngineStats = ""; emit gameUpdateStatsChanged(); + emit renderEngineStatsChanged(); } } diff --git a/interface/src/ui/Stats.h b/interface/src/ui/Stats.h index af3189f20b..e5fc0beaf6 100644 --- a/interface/src/ui/Stats.h +++ b/interface/src/ui/Stats.h @@ -106,6 +106,7 @@ class Stats : public QQuickItem { STATS_PROPERTY(QString, lodStatus, QString()) STATS_PROPERTY(QString, timingStats, QString()) STATS_PROPERTY(QString, gameUpdateStats, QString()) + STATS_PROPERTY(QString, renderEngineStats, QString()) STATS_PROPERTY(int, serverElements, 0) STATS_PROPERTY(int, serverInternal, 0) STATS_PROPERTY(int, serverLeaves, 0) @@ -239,6 +240,7 @@ signals: void localLeavesChanged(); void timingStatsChanged(); void gameUpdateStatsChanged(); + void renderEngineStatsChanged(); void glContextSwapchainMemoryChanged(); void qmlTextureMemoryChanged(); void texturePendingTransfersChanged();