Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qopengldebug.h
Go to the documentation of this file.
1// Copyright (C) 2013 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QOPENGLDEBUG_H
5#define QOPENGLDEBUG_H
6
7#include <QtOpenGL/qtopenglglobal.h>
8
9#ifndef QT_NO_OPENGL
10
11#include <QtCore/qshareddata.h>
12#include <QtCore/qflags.h>
13#include <QtCore/qlist.h>
14#include <QtCore/qmetatype.h>
15#include <QtCore/qdebug.h>
16#include <QtGui/qopenglcontext.h>
17
18#if defined(Q_QDOC)
19#undef GLuint
20typedef unsigned int GLuint;
21#endif
22
24
28
29class Q_OPENGL_EXPORT QOpenGLDebugMessage
30{
31public:
32 enum Source {
33 InvalidSource = 0x00000000,
34 APISource = 0x00000001,
35 WindowSystemSource = 0x00000002,
36 ShaderCompilerSource = 0x00000004,
37 ThirdPartySource = 0x00000008,
38 ApplicationSource = 0x00000010,
39 OtherSource = 0x00000020,
40 LastSource = OtherSource, // private API
41 AnySource = 0xffffffff
42 };
43 Q_DECLARE_FLAGS(Sources, Source)
44
45 enum Type {
46 InvalidType = 0x00000000,
47 ErrorType = 0x00000001,
48 DeprecatedBehaviorType = 0x00000002,
49 UndefinedBehaviorType = 0x00000004,
50 PortabilityType = 0x00000008,
51 PerformanceType = 0x00000010,
52 OtherType = 0x00000020,
53 MarkerType = 0x00000040,
54 GroupPushType = 0x00000080,
55 GroupPopType = 0x00000100,
56 LastType = GroupPopType, // private API
57 AnyType = 0xffffffff
58 };
59 Q_DECLARE_FLAGS(Types, Type)
60
61 enum Severity {
62 InvalidSeverity = 0x00000000,
63 HighSeverity = 0x00000001,
64 MediumSeverity = 0x00000002,
65 LowSeverity = 0x00000004,
66 NotificationSeverity = 0x00000008,
67 LastSeverity = NotificationSeverity, // private API
68 AnySeverity = 0xffffffff
69 };
70 Q_DECLARE_FLAGS(Severities, Severity)
71
73 QOpenGLDebugMessage(const QOpenGLDebugMessage &debugMessage);
74
75 QOpenGLDebugMessage &operator=(const QOpenGLDebugMessage &debugMessage);
76 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QOpenGLDebugMessage)
78
79 void swap(QOpenGLDebugMessage &other) noexcept { d.swap(other.d); }
80
81 Source source() const;
82 Type type() const;
83 Severity severity() const;
84 GLuint id() const;
85 QString message() const;
86
87 static QOpenGLDebugMessage createApplicationMessage(const QString &text,
88 GLuint id = 0,
89 Severity severity = NotificationSeverity,
90 Type type = OtherType);
91 static QOpenGLDebugMessage createThirdPartyMessage(const QString &text,
92 GLuint id = 0,
93 Severity severity = NotificationSeverity,
94 Type type = OtherType);
95
96 bool operator==(const QOpenGLDebugMessage &debugMessage) const;
97 inline bool operator!=(const QOpenGLDebugMessage &debugMessage) const { return !operator==(debugMessage); }
98
99private:
100 friend class QOpenGLDebugLogger;
102 QSharedDataPointer<QOpenGLDebugMessagePrivate> d;
103};
104
105Q_DECLARE_SHARED(QOpenGLDebugMessage)
106Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLDebugMessage::Sources)
107Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLDebugMessage::Types)
108Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLDebugMessage::Severities)
109
110#ifndef QT_NO_DEBUG_STREAM
115#endif
116
118
119class Q_OPENGL_EXPORT QOpenGLDebugLogger : public QObject
120{
122 Q_PROPERTY(LoggingMode loggingMode READ loggingMode)
123
124public:
127 SynchronousLogging
128 };
129 Q_ENUM(LoggingMode)
130
131 explicit QOpenGLDebugLogger(QObject *parent = nullptr);
133
134 bool initialize();
135
136 bool isLogging() const;
137 LoggingMode loggingMode() const;
138
139 qint64 maximumMessageLength() const;
140
141 void pushGroup(const QString &name,
142 GLuint id = 0,
144 void popGroup();
145
146 void enableMessages(QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource,
147 QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType,
148 QOpenGLDebugMessage::Severities severities = QOpenGLDebugMessage::AnySeverity);
149
150 void enableMessages(const QList<GLuint> &ids,
151 QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource,
152 QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType);
153
154 void disableMessages(QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource,
155 QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType,
156 QOpenGLDebugMessage::Severities severities = QOpenGLDebugMessage::AnySeverity);
157
158 void disableMessages(const QList<GLuint> &ids,
159 QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource,
160 QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType);
161
162 QList<QOpenGLDebugMessage> loggedMessages() const;
163
164public Q_SLOTS:
165 void logMessage(const QOpenGLDebugMessage &debugMessage);
166 void startLogging(LoggingMode loggingMode = AsynchronousLogging);
167 void stopLogging();
168
170 void messageLogged(const QOpenGLDebugMessage &debugMessage);
171
172private:
173 Q_DISABLE_COPY(QOpenGLDebugLogger)
174 Q_DECLARE_PRIVATE(QOpenGLDebugLogger)
175 Q_PRIVATE_SLOT(d_func(), void _q_contextAboutToBeDestroyed())
176};
177
179
181
182#endif // QT_NO_OPENGL
183
184#endif // QOPENGLDEBUG_H
\inmodule QtCore
\inmodule QtCore
Definition qobject.h:103
The QOpenGLDebugLogger enables logging of OpenGL debugging messages.
void messageLogged(const QOpenGLDebugMessage &debugMessage)
This signal is emitted when a debug message (wrapped by the debugMessage argument) is logged from the...
LoggingMode
The LoggingMode enum defines the logging mode of the logger object.
The QOpenGLDebugMessage class wraps an OpenGL debug message.
Type
The Type enum defines the type of the debug message.
Source
The Source enum defines the source of the debug message.
void swap(QOpenGLDebugMessage &other) noexcept
Swaps the message debugMessage with this message.
bool operator!=(const QOpenGLDebugMessage &debugMessage) const
Returns true if this message is different from debugMessage, or false otherwise.
Severity
The Severity enum defines the severity of the debug message.
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
QString text
Combined button and popup list for selecting options.
static bool initialize()
Definition qctf.cpp:94
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
#define QT_DECL_METATYPE_EXTERN(TYPE, EXPORT)
Definition qmetatype.h:1388
Q_OPENGL_EXPORT QDebug operator<<(QDebug debug, const QOpenGLDebugMessage &message)
GLsizei GLenum GLenum GLuint GLenum * severities
GLenum GLenum GLsizei const GLuint * ids
GLsizei GLenum GLenum * types
GLenum GLuint id
[7]
GLenum type
GLuint GLsizei const GLchar * message
GLenum GLenum severity
GLuint name
GLsizei GLenum * sources
GLsizei GLsizei GLchar * source
bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2)
Definition qrandom.cpp:1220
#define GLuint
#define Q_ENUM(x)
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_SLOTS
#define Q_PRIVATE_SLOT(d, signature)
#define Q_SIGNALS
long long qint64
Definition qtypes.h:60
QSharedPointer< T > other(t)
[5]
Definition moc.h:23