diff options
author | Christiaan Janssen <christiaan.janssen@digia.com> | 2013-04-17 16:46:12 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-06 14:19:15 +0200 |
commit | 49ef011e33b9ef977679b3d30f883fccea0d8748 (patch) | |
tree | 96a17090cc17ab04796094a10809274e7a1f3944 /src/quick/scenegraph/util/qsgtexture.cpp | |
parent | f314fd4327167dd6af88f9b7050b34144d75241d (diff) |
QmlProfiler: SceneGraph profiling
Change-Id: Ide71b330b13fc3816ed191bd9af84e0fce0d9587
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/quick/scenegraph/util/qsgtexture.cpp')
-rw-r--r-- | src/quick/scenegraph/util/qsgtexture.cpp | 58 |
1 files changed, 38 insertions, 20 deletions
diff --git a/src/quick/scenegraph/util/qsgtexture.cpp b/src/quick/scenegraph/util/qsgtexture.cpp index ad98fe9d47..a104e4af2f 100644 --- a/src/quick/scenegraph/util/qsgtexture.cpp +++ b/src/quick/scenegraph/util/qsgtexture.cpp @@ -614,7 +614,8 @@ void QSGPlainTexture::bind() m_dirty_texture = false; #ifndef QSG_NO_RENDER_TIMING - if (qsg_render_timing) + bool profileFrames = qsg_render_timing || QQmlProfilerService::enabled; + if (profileFrames) qsg_renderer_timer.start(); #endif @@ -628,6 +629,11 @@ void QSGPlainTexture::bind() m_texture_size.width(), m_texture_size.height()); } + if (QQmlProfilerService::enabled) { + QQmlProfilerService::sceneGraphFrame( + QQmlProfilerService::SceneGraphTextureDeletion, + qsg_renderer_timer.nsecsElapsed()); + } #endif } m_texture_id = 0; @@ -645,9 +651,9 @@ void QSGPlainTexture::bind() glBindTexture(GL_TEXTURE_2D, m_texture_id); #ifndef QSG_NO_RENDER_TIMING - int bindTime = 0; - if (qsg_render_timing) - bindTime = qsg_renderer_timer.elapsed(); + qint64 bindTime = 0; + if (profileFrames) + bindTime = qsg_renderer_timer.nsecsElapsed(); #endif // ### TODO: check for out-of-memory situations... @@ -659,9 +665,9 @@ void QSGPlainTexture::bind() : m_image.convertToFormat(QImage::Format_ARGB32_Premultiplied); #ifndef QSG_NO_RENDER_TIMING - int convertTime = 0; - if (qsg_render_timing) - convertTime = qsg_renderer_timer.elapsed(); + qint64 convertTime = 0; + if (profileFrames) + convertTime = qsg_renderer_timer.nsecsElapsed(); #endif updateBindOptions(m_dirty_bind_options); @@ -684,16 +690,16 @@ void QSGPlainTexture::bind() } #ifndef QSG_NO_RENDER_TIMING - int swizzleTime = 0; - if (qsg_render_timing) - swizzleTime = qsg_renderer_timer.elapsed(); + qint64 swizzleTime = 0; + if (profileFrames) + swizzleTime = qsg_renderer_timer.nsecsElapsed(); #endif glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, w, h, 0, externalFormat, GL_UNSIGNED_BYTE, tmp.constBits()); #ifndef QSG_NO_RENDER_TIMING - int uploadTime = 0; - if (qsg_render_timing) - uploadTime = qsg_renderer_timer.elapsed(); + qint64 uploadTime = 0; + if (profileFrames) + uploadTime = qsg_renderer_timer.nsecsElapsed(); #endif @@ -704,23 +710,35 @@ void QSGPlainTexture::bind() } #ifndef QSG_NO_RENDER_TIMING - int mipmapTime = 0; + qint64 mipmapTime = 0; if (qsg_render_timing) { - mipmapTime = qsg_renderer_timer.elapsed(); + mipmapTime = qsg_renderer_timer.nsecsElapsed(); printf(" - plaintexture(%dx%d) bind=%d, convert=%d, swizzle=%d (%s->%s), upload=%d, mipmap=%d, total=%d\n", m_texture_size.width(), m_texture_size.height(), - bindTime, - convertTime - bindTime, - swizzleTime - convertTime, + int(bindTime/1000000), + int((convertTime - bindTime)/1000000), + int((swizzleTime - convertTime)/1000000), externalFormat == GL_BGRA ? "BGRA" : "RGBA", internalFormat == GL_BGRA ? "BGRA" : "RGBA", - uploadTime - swizzleTime, - mipmapTime - uploadTime, + int((uploadTime - swizzleTime)/1000000), + int((mipmapTime - uploadTime)/1000000), (int) qsg_renderer_timer.elapsed()); } + if (QQmlProfilerService::enabled) { + mipmapTime = qsg_renderer_timer.nsecsElapsed(); + + QQmlProfilerService::sceneGraphFrame( + QQmlProfilerService::SceneGraphTexturePrepare, + bindTime, + convertTime - bindTime, + swizzleTime - convertTime, + uploadTime - swizzleTime, + mipmapTime - uploadTime); + } + #endif |