diff options
Diffstat (limited to 'src/quick/scenegraph/util/qsgplaintexture.cpp')
-rw-r--r-- | src/quick/scenegraph/util/qsgplaintexture.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/quick/scenegraph/util/qsgplaintexture.cpp b/src/quick/scenegraph/util/qsgplaintexture.cpp index fdebe03494..f00918bb4e 100644 --- a/src/quick/scenegraph/util/qsgplaintexture.cpp +++ b/src/quick/scenegraph/util/qsgplaintexture.cpp @@ -38,7 +38,6 @@ ****************************************************************************/ #include "qsgplaintexture_p.h" -#include "qsgrhinativetextureimporter_p.h" #include <QtQuick/private/qsgcontext_p.h> #include <qmath.h> #include <private/qquickprofiler_p.h> @@ -53,6 +52,8 @@ #endif #include <QtGui/private/qrhi_p.h> +#include <qtquick_tracepoints_p.h> + #if QT_CONFIG(opengl) static QElapsedTimer qsg_renderer_timer; #endif @@ -150,9 +151,11 @@ void QSGPlainTexture::setTextureId(int id) // legacy (GL-only) void QSGPlainTexture::bind() // legacy (GL-only) { #if QT_CONFIG(opengl) + Q_TRACE_SCOPE(QSG_texture_prepare); QOpenGLContext *context = QOpenGLContext::currentContext(); QOpenGLFunctions *funcs = context->functions(); if (!m_dirty_texture) { + Q_TRACE_SCOPE(QSG_texture_bind); funcs->glBindTexture(GL_TEXTURE_2D, m_texture_id); if (mipmapFiltering() != QSGTexture::None && !m_mipmaps_generated) { funcs->glGenerateMipmap(GL_TEXTURE_2D); @@ -174,6 +177,7 @@ void QSGPlainTexture::bind() // legacy (GL-only) if (m_image.isNull()) { if (m_texture_id && m_owns_texture) { + Q_TRACE_SCOPE(QSG_texture_delete); funcs->glDeleteTextures(1, &m_texture_id); qCDebug(QSG_LOG_TIME_TEXTURE, "plain texture deleted in %dms - %dx%d", (int) qsg_renderer_timer.elapsed(), @@ -189,6 +193,8 @@ void QSGPlainTexture::bind() // legacy (GL-only) return; } + Q_TRACE(QSG_texture_bind_entry); + if (m_texture_id == 0) funcs->glGenTextures(1, &m_texture_id); funcs->glBindTexture(GL_TEXTURE_2D, m_texture_id); @@ -196,8 +202,10 @@ void QSGPlainTexture::bind() // legacy (GL-only) qint64 bindTime = 0; if (profileFrames) bindTime = qsg_renderer_timer.nsecsElapsed(); + Q_TRACE(QSG_texture_bind_exit); Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphTexturePrepare, QQuickProfiler::SceneGraphTexturePrepareBind); + Q_TRACE(QSG_texture_upload_entry); // ### TODO: check for out-of-memory situations... @@ -232,8 +240,10 @@ void QSGPlainTexture::bind() // legacy (GL-only) qint64 uploadTime = 0; if (profileFrames) uploadTime = qsg_renderer_timer.nsecsElapsed(); + Q_TRACE(QSG_texture_upload_exit); Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphTexturePrepare, QQuickProfiler::SceneGraphTexturePrepareUpload); + Q_TRACE(QSG_texture_mipmap_entry); if (mipmapFiltering() != QSGTexture::None) { funcs->glGenerateMipmap(GL_TEXTURE_2D); @@ -252,6 +262,7 @@ void QSGPlainTexture::bind() // legacy (GL-only) int((mipmapTime - uploadTime)/1000000), m_texture_size != m_image.size() ? " (scaled to GL_MAX_TEXTURE_SIZE)" : ""); } + Q_TRACE(QSG_texture_mipmap_exit); Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphTexturePrepare, QQuickProfiler::SceneGraphTexturePrepareMipmap); @@ -281,14 +292,14 @@ void QSGPlainTexture::setTextureFromNativeObject(QRhi *rhi, QQuickWindow::Native { Q_UNUSED(type); - QRhiTexture::Flags flags = 0; + QRhiTexture::Flags flags; if (mipmap) flags |= QRhiTexture::MipMapped | QRhiTexture::UsedWithGenerateMips; QRhiTexture *t = rhi->newTexture(QRhiTexture::RGBA8, size, 1, flags); // ownership of the native object is never taken - QSGRhiNativeTextureImporter::buildWrapper(rhi, t, nativeObjectPtr, nativeLayout); + t->buildFrom({nativeObjectPtr, nativeLayout}); setTexture(t); } @@ -421,7 +432,7 @@ void QSGPlainTexturePrivate::updateRhiTexture(QRhi *rhi, QRhiResourceUpdateBatch } if (!q->m_texture) { - QRhiTexture::Flags f = 0; + QRhiTexture::Flags f; if (hasMipMaps) f |= QRhiTexture::MipMapped | QRhiTexture::UsedWithGenerateMips; |