summaryrefslogtreecommitdiffstats
path: root/util/qt3d/qglinfo/qglinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'util/qt3d/qglinfo/qglinfo.cpp')
-rw-r--r--util/qt3d/qglinfo/qglinfo.cpp344
1 files changed, 0 insertions, 344 deletions
diff --git a/util/qt3d/qglinfo/qglinfo.cpp b/util/qt3d/qglinfo/qglinfo.cpp
deleted file mode 100644
index e58d1005..00000000
--- a/util/qt3d/qglinfo/qglinfo.cpp
+++ /dev/null
@@ -1,344 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qglinfo.h"
-
-#include <QtOpenGL/qgl.h>
-#include <QtOpenGL/qglpixelbuffer.h>
-#include <QtOpenGL/qglframebufferobject.h>
-#include <QtOpenGL/qglshaderprogram.h>
-
-#include <QtCore/qtimer.h>
-#include <QtCore/qdatetime.h>
-
-#include <QtCore/qsettings.h>
-
-#if !defined(QT_NO_EGL) && defined(QT_BUILD_INTERNAL)
-#include <QtGui/private/qegl_p.h>
-#include <QtGui/private/qeglproperties_p.h>
-#endif
-
-QGLInfo::QGLInfo(QObject *parent)
- : QObject(parent)
-{
- QTimer::singleShot(0, this, SLOT(initialize()));
-}
-
-static QString nice(const QString &s)
-{
- QString r(s);
- r.replace(QLatin1String("\n"), QLatin1String("<br>\n"));
- r.replace(QLatin1String("true"), QLatin1String("<span style=\"color: green\">true</span>"));
- r.replace(QLatin1String("false"), QLatin1String("<span style=\"color: red\">false</span>"));
- return r;
-}
-
-void QGLInfo::initialize()
-{
- QWidget *win = qobject_cast<QGLWidget *>(parent());
- // We need some kind of GL context to do the querying.
- QGLWidget *glWidget = new QGLWidget(win);
- glWidget->makeCurrent();
- m_qtGLVersionInfo = reportQtGLVersionInfo();
- m_qtGLFeatures = reportQtGLFeatures();
- m_glVersionInfo = reportGLVersionInfo();
- m_glExtensionInfo = reportGLExtensionInfo();
- m_eglVersionInfo = reportEGLVersionInfo();
- m_eglExtensionInfo = reportEGLExtensionInfo();
- m_eglConfigInfo = reportEGLConfigInfo();
- glWidget->doneCurrent();
- delete glWidget;
-
- QString welcome;
- {
- QSettings freshStart;
- if (!freshStart.contains(QLatin1String("new_install")))
- {
- welcome = QLatin1String("<h1>Welcome to QtQuick 3D!</h1>"
- "<p>Try running the FPS test from the "
- "View menu above to confirm that Qt3Quick 3D "
- "is installed correctly.</p><hr>");
- }
- freshStart.setValue(QLatin1String("new_install"), true);
- }
-
- QString html = tr("<h1>Qt GL Info Report</h1>"
- "<p>Generated at: %1</p>"
- "<h2>Qt GL Version Info</h2>"
- "<p>%2</p>"
- "<h2>Qt GL Features</h2>"
- "<p>%3</p>"
- "<h2>GL Version Info</h2>"
- "<p>%4</p>"
- "<h2>GL Extension Info</h2>"
- "<p>%5</p>")
- .arg(QDateTime::currentDateTime().toString())
- .arg(nice(m_qtGLVersionInfo))
- .arg(nice(m_qtGLFeatures))
- .arg(nice(m_glVersionInfo))
- .arg(nice(m_glExtensionInfo));
- if (!welcome.isEmpty())
- html.prepend(welcome);
-
-#if !defined(QT_NO_EGL)
- html += tr("<h2>EGL Version Info</h2>"
- "<p>%1</p>"
- "<h2>EGL Extension Info</h2>"
- "<p>%2</p>"
- "<h2>EGL Configurations</h2>"
- "<p>%3</p>")
- .arg(nice(m_eglVersionInfo))
- .arg(nice(m_eglExtensionInfo))
- .arg(nice(m_eglConfigInfo));
-#endif
- emit reportHtml(html);
-}
-
-QString QGLInfo::report() const
-{
- QString report;
- report += m_qtGLVersionInfo;
- report += QLatin1Char('\n');
- report += m_qtGLFeatures;
- report += m_glVersionInfo;
- report += tr("OpenGL extensions:\n");
- report += m_glExtensionInfo;
-#if !defined(QT_NO_EGL)
- report += m_eglVersionInfo;
- report += tr("EGL extensions:\n");
- report += m_eglExtensionInfo;
- report += tr("EGL configurations:\n");
- report += m_eglConfigInfo;
-#endif
- return report;
-}
-
-QString QGLInfo::reportQtGLVersionInfo() const
-{
- // Dump what Qt thinks the version is.
- QGLFormat::OpenGLVersionFlags flags = QGLFormat::openGLVersionFlags();
- QByteArray version;
- if ((flags & QGLFormat::OpenGL_Version_1_1) != 0)
- version += "1.1 ";
- if ((flags & QGLFormat::OpenGL_Version_1_2) != 0)
- version += "1.2 ";
- if ((flags & QGLFormat::OpenGL_Version_1_3) != 0)
- version += "1.3 ";
- if ((flags & QGLFormat::OpenGL_Version_1_4) != 0)
- version += "1.4 ";
- if ((flags & QGLFormat::OpenGL_Version_1_5) != 0)
- version += "1.5 ";
- if ((flags & QGLFormat::OpenGL_Version_2_0) != 0)
- version += "2.0 ";
- if ((flags & QGLFormat::OpenGL_Version_2_1) != 0)
- version += "2.1 ";
- if ((flags & QGLFormat::OpenGL_Version_3_0) != 0)
- version += "3.0 ";
- if ((flags & QGLFormat::OpenGL_Version_3_1) != 0)
- version += "3.1 ";
- if ((flags & QGLFormat::OpenGL_Version_3_2) != 0)
- version += "3.2 ";
- if ((flags & QGLFormat::OpenGL_Version_3_3) != 0)
- version += "3.3 ";
- if ((flags & QGLFormat::OpenGL_Version_4_0) != 0)
- version += "4.0 ";
- if ((flags & QGLFormat::OpenGL_ES_Common_Version_1_0) != 0)
- version += "ES/1.0 ";
- if ((flags & QGLFormat::OpenGL_ES_CommonLite_Version_1_0) != 0)
- version += "ES/1.0CL ";
- if ((flags & QGLFormat::OpenGL_ES_Common_Version_1_1) != 0)
- version += "ES/1.1 ";
- if ((flags & QGLFormat::OpenGL_ES_CommonLite_Version_1_1) != 0)
- version += "ES/1.1CL ";
- if ((flags & QGLFormat::OpenGL_ES_Version_2_0) != 0)
- version += "ES/2.0 ";
- flags &= ~(QGLFormat::OpenGL_Version_1_1 |
- QGLFormat::OpenGL_Version_1_2 |
- QGLFormat::OpenGL_Version_1_3 |
- QGLFormat::OpenGL_Version_1_4 |
- QGLFormat::OpenGL_Version_1_5 |
- QGLFormat::OpenGL_Version_2_0 |
- QGLFormat::OpenGL_Version_2_1 |
- QGLFormat::OpenGL_Version_3_0 |
- QGLFormat::OpenGL_Version_3_1 |
- QGLFormat::OpenGL_Version_3_2 |
- QGLFormat::OpenGL_Version_3_3 |
- QGLFormat::OpenGL_Version_4_0 |
- QGLFormat::OpenGL_ES_Common_Version_1_0 |
- QGLFormat::OpenGL_ES_CommonLite_Version_1_0 |
- QGLFormat::OpenGL_ES_Common_Version_1_1 |
- QGLFormat::OpenGL_ES_CommonLite_Version_1_1 |
- QGLFormat::OpenGL_ES_Version_2_0);
- if (flags != 0)
- version += "Other=0x" + QByteArray::number(int(flags), 16);
- return QLatin1String("QGLFormat::openGLVersionFlags: ") +
- QString::fromLatin1(version.constData());
-}
-
-static QString printBool(const char *text, bool value)
-{
- return QLatin1String(text) + (value ? QLatin1String("true\n") : QLatin1String("false\n"));
-}
-
-QString QGLInfo::reportQtGLFeatures() const
-{
- QString d;
- d += printBool("QGLFormat::hasOpenGL: ", QGLFormat::hasOpenGL());
- d += printBool("QGLFormat::hasOpenGLOverlays: ", QGLFormat::hasOpenGLOverlays());
- d += printBool("QGLPixelBuffer::hasOpenGLPbuffers: ", QGLPixelBuffer::hasOpenGLPbuffers());
- d += printBool("QGLFramebufferObject::hasOpenGLFramebufferObjects: ",
- QGLFramebufferObject::hasOpenGLFramebufferObjects());
- d += printBool("QGLFramebufferObject::hasOpenGLFramebufferBlit: ",
- QGLFramebufferObject::hasOpenGLFramebufferBlit());
- d += printBool("QGLShaderProgram::hasOpenGLShaderPrograms: ",
- QGLShaderProgram::hasOpenGLShaderPrograms());
- return d;
-}
-
-QString QGLInfo::reportGLVersionInfo() const
-{
- QString d;
- d += QLatin1String("OpenGL vendor string: ");
- d += QLatin1String(reinterpret_cast<const char *>(glGetString(GL_VENDOR)));
- d += QLatin1String("\n");
- d += QLatin1String("OpenGL renderer string: ");
- d += QLatin1String(reinterpret_cast<const char *>(glGetString(GL_RENDERER)));
- d += QLatin1String("\n");
- d += QLatin1String("OpenGL version string: ");
- d += QLatin1String(reinterpret_cast<const char *>(glGetString(GL_VERSION)));
- d += QLatin1String("\n");
- return d;
-}
-
-QString QGLInfo::reportGLExtensionInfo() const
-{
- QByteArray extString
- (reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS)));
- return formatExtensions(extString);
-}
-
-QString QGLInfo::formatExtensions(const QByteArray& extString) const
-{
- QString d;
- QList<QByteArray> extns = extString.split(' ');
- qSort(extns);
- QByteArray line;
- foreach (QByteArray extn, extns) {
- if (extn.isEmpty())
- continue;
- if (!line.isEmpty() && (line.size() + extn.size() + 1) > 70) {
- d += QLatin1String(" ") +
- QString::fromLatin1(line.constData()) +
- QLatin1String("\n");
- line = QByteArray();
- }
- line += extn;
- line += char(' ');
- }
- if (!line.isEmpty()) {
- d += QLatin1String(" ") +
- QString::fromLatin1(line.constData()) +
- QLatin1String("\n");
- }
- return d;
-}
-
-QString QGLInfo::reportEGLVersionInfo() const
-{
-#if !defined(QT_NO_EGL) && defined(QT_BUILD_INTERNAL)
- QString d;
- EGLDisplay dpy = eglGetCurrentDisplay();
- d += "EGL vendor string: ";
- d += reinterpret_cast<const char *>(eglQueryString(dpy, EGL_VENDOR));
- d += "\n";
- d += "EGL version string: ";
- d += reinterpret_cast<const char *>(eglQueryString(dpy, EGL_VERSION));
- d += "\n";
-#ifdef EGL_CLIENT_APIS
- d += "EGL client API's: ";
- d += reinterpret_cast<const char *>(eglQueryString(dpy, EGL_CLIENT_APIS));
- d += "\n";
-#endif
- return d;
-#else
- return QString();
-#endif
-}
-
-QString QGLInfo::reportEGLExtensionInfo() const
-{
-#if !defined(QT_NO_EGL) && defined(QT_BUILD_INTERNAL)
- EGLDisplay dpy = eglGetCurrentDisplay();
- QByteArray extString
- (reinterpret_cast<const char *>(eglQueryString(dpy, EGL_EXTENSIONS)));
- return formatExtensions(extString);
-#else
- return QString();
-#endif
-}
-
-QString QGLInfo::reportEGLConfigInfo() const
-{
-#if !defined(QT_NO_EGL) && defined(QT_BUILD_INTERNAL)
- QString d;
- QEglProperties props;
- EGLint count = 0;
- EGLDisplay dpy = eglGetCurrentDisplay();
- EGLContext ctx = eglGetCurrentContext();
- EGLint cfgnum = 0;
- if (eglQueryContext(dpy, ctx, EGL_CONFIG_ID, &cfgnum)) {
- d += QLatin1String("Window configuration in use: ") + QString::number(cfgnum) +
- QLatin1String("\n\n");
- }
- if (!eglGetConfigs(dpy, 0, 0, &count) || count < 1)
- return d;
- EGLConfig *configs = new EGLConfig [count];
- eglGetConfigs(dpy, configs, count, &count);
- for (EGLint index = 0; index < count; ++index) {
- props = QEglProperties(configs[index]);
- d += props.toString() + QLatin1String("\n\n");
- }
- delete [] configs;
- return d;
-#else
- return QString();
-#endif
-}