summaryrefslogtreecommitdiffstats
path: root/src/Runtime/Source/engine
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2019-05-03 13:37:20 +0300
committerAapo Keskimolo <aapo.keskimolo@qt.io>2019-05-07 07:14:23 +0000
commit24fcce4eee6b9e39945340db78dad510c837fb72 (patch)
tree16817e773c61affc715c9ade50b0c9aa485ab27b /src/Runtime/Source/engine
parentcb78fce1c96b469a1e064e76e81ae10e1834cb11 (diff)
Add simple performance view
The F7 button in the viewer now shows the render statistics as well as the layer profiling timers. Task-number: QT3DS-3211 Change-Id: I9553b9c522a9d16efd53b17c1f10538294b2b834 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Runtime/Source/engine')
-rw-r--r--src/Runtime/Source/engine/Qt3DSRuntimeView.cpp27
-rw-r--r--src/Runtime/Source/engine/Qt3DSRuntimeView.h3
2 files changed, 25 insertions, 5 deletions
diff --git a/src/Runtime/Source/engine/Qt3DSRuntimeView.cpp b/src/Runtime/Source/engine/Qt3DSRuntimeView.cpp
index e4e8453d..b582195b 100644
--- a/src/Runtime/Source/engine/Qt3DSRuntimeView.cpp
+++ b/src/Runtime/Source/engine/Qt3DSRuntimeView.cpp
@@ -160,10 +160,12 @@ private:
qt3ds::Qt3DSAssetVisitor *m_visitor;
bool m_showOnScreenStats;
+ QElapsedTimer *m_startupTimer;
+ qint64 m_startupTime;
public:
CRuntimeView(ITimeProvider &inTimeProvider, IWindowSystem &inWindowSystem,
- IAudioPlayer *inAudioPlayer);
+ IAudioPlayer *inAudioPlayer, QElapsedTimer *startupTimer);
~CRuntimeView() override;
QT3DS_IMPLEMENT_REF_COUNT_ADDREF_RELEASE_OVERRIDE(qt3ds::render::g_BaseAllocator)
@@ -226,7 +228,7 @@ public:
};
CRuntimeView::CRuntimeView(ITimeProvider &inTimeProvider, IWindowSystem &inWindowSystem,
- IAudioPlayer *inAudioPlayer)
+ IAudioPlayer *inAudioPlayer, QElapsedTimer *startupTimer)
: m_RenderEngine(nullptr)
, m_InputEngine(nullptr)
, m_Application(nullptr)
@@ -237,6 +239,8 @@ CRuntimeView::CRuntimeView(ITimeProvider &inTimeProvider, IWindowSystem &inWindo
, mRefCount(0)
, m_visitor(nullptr)
, m_showOnScreenStats(false)
+ , m_startupTimer(startupTimer)
+ , m_startupTime(-1)
{
}
@@ -348,6 +352,11 @@ void CRuntimeView::Render()
m_Application->UpdateAndRender();
+ if (m_startupTime < 0 && m_startupTimer) {
+ m_startupTime = m_startupTimer->elapsed();
+ m_startupTimer->invalidate();
+ }
+
if (m_showOnScreenStats) {
ITegraRenderStateManager &manager
= GetTegraRenderEngine()->GetTegraRenderStateManager();
@@ -359,6 +368,7 @@ void CRuntimeView::Render()
QPair<QT3DSF32, QT3DSF32> fps
= m_RuntimeFactory->GetQt3DSRenderContext().GetFPS();
+ const QVector<QT3DSF32> times = m_RuntimeFactory->GetQt3DSRenderContext().GetFrameTimes();
QString text;
QTextStream stream(&text);
@@ -366,6 +376,14 @@ void CRuntimeView::Render()
stream << QString::number(fps.first, 'f', 2);
stream << " fps, frame count ";
stream << QString::number(fps.second);
+ stream << ", frame time ";
+ stream << QString::number(times[0], 'f', 2);
+ stream << " ms";
+ if (m_startupTime) {
+ stream << ", Init time: ";
+ stream << QString::number(m_startupTime);
+ stream << " ms";
+ }
// bottom left coordinates
GetTegraRenderEngine()->RenderText2D(
@@ -446,6 +464,7 @@ INT32 CRuntimeView::GetFrameCount()
void CRuntimeView::showOnScreenStats(bool show)
{
m_showOnScreenStats = show;
+ m_RuntimeFactory->GetQt3DSRenderContext().GetRenderer().EnableLayerGpuProfiling(show);
}
CInputEngine *CRuntimeView::GetInputEngine()
@@ -718,10 +737,10 @@ void CRuntimeView::setAssetVisitor(qt3ds::Qt3DSAssetVisitor *v)
}
IRuntimeView &IRuntimeView::Create(ITimeProvider &inProvider, IWindowSystem &inWindowSystem,
- IAudioPlayer *inAudioPlayer)
+ IAudioPlayer *inAudioPlayer, QElapsedTimer *startupTimer)
{
return *QT3DS_NEW(qt3ds::render::g_BaseAllocator, CRuntimeView)(inProvider, inWindowSystem,
- inAudioPlayer);
+ inAudioPlayer, startupTimer);
}
QRuntimeViewSignalProxy *IRuntimeView::signalProxy()
diff --git a/src/Runtime/Source/engine/Qt3DSRuntimeView.h b/src/Runtime/Source/engine/Qt3DSRuntimeView.h
index 52aa969c..7b9a5945 100644
--- a/src/Runtime/Source/engine/Qt3DSRuntimeView.h
+++ b/src/Runtime/Source/engine/Qt3DSRuntimeView.h
@@ -211,7 +211,8 @@ public:
public:
static IRuntimeView &Create(ITimeProvider &inProvider, IWindowSystem &inWindowSystem,
- IAudioPlayer *inAudioPlayer = nullptr);
+ IAudioPlayer *inAudioPlayer = nullptr,
+ QElapsedTimer *startupTimer = nullptr);
public:
QRuntimeViewSignalProxy *signalProxy();