Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qopenglqueryhelper_p.h
Go to the documentation of this file.
1// Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB).
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QOPENGLQUERYHELPER_P_H
6#define QOPENGLQUERYHELPER_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtGui/private/qtguiglobal_p.h>
20
21#if !QT_CONFIG(opengles2)
22
23#include <QtGui/QOpenGLContext>
24
25QT_BEGIN_NAMESPACE
26
27// Helper class used by QOpenGLTimerQuery and later will be used by
28// QOpenGLOcclusionQuery
29class QOpenGLQueryHelper
30{
31public:
32 QOpenGLQueryHelper(QOpenGLContext *context)
33 : GetQueryObjectuiv(nullptr),
34 GetQueryObjectiv(nullptr),
35 GetQueryiv(nullptr),
36 EndQuery(nullptr),
37 BeginQuery(nullptr),
38 IsQuery(nullptr),
39 DeleteQueries(nullptr),
40 GenQueries(nullptr),
41 GetInteger64v(nullptr),
42 GetQueryObjectui64v(nullptr),
43 GetQueryObjecti64v(nullptr),
44 QueryCounter(nullptr)
45 {
46 Q_ASSERT(context);
47
48 // Core in OpenGL >=1.5
49 GetQueryObjectuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint *)>(context->getProcAddress("glGetQueryObjectuiv"));
50 GetQueryObjectiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetQueryObjectiv"));
51 GetQueryiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetQueryiv"));
52 EndQuery = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glEndQuery"));
53 BeginQuery = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBeginQuery"));
54 IsQuery = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsQuery"));
55 DeleteQueries = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteQueries"));
56 GenQueries = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenQueries"));
57
58 // Core in OpenGL >=3.2
59 GetInteger64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint64 *)>(context->getProcAddress("glGetInteger64v"));
60
61 // Core in OpenGL >=3.3 / ARB_timer_query
62 GetQueryObjectui64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint64 *)>(context->getProcAddress("glGetQueryObjectui64v"));
63 GetQueryObjecti64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint64 *)>(context->getProcAddress("glGetQueryObjecti64v"));
64 QueryCounter = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glQueryCounter"));
65 }
66
67 inline void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)
68 {
69 GetQueryObjectuiv(id, pname, params);
70 }
71
72 inline void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params)
73 {
74 GetQueryObjectiv(id, pname, params);
75 }
76
77 inline void glGetQueryiv(GLenum target, GLenum pname, GLint *params)
78 {
79 GetQueryiv(target, pname, params);
80 }
81
82 inline void glEndQuery(GLenum target)
83 {
84 EndQuery(target);
85 }
86
87 inline void glBeginQuery(GLenum target, GLuint id)
88 {
89 BeginQuery(target, id);
90 }
91
92 inline GLboolean glIsQuery(GLuint id)
93 {
94 return IsQuery(id);
95 }
96
97 inline void glDeleteQueries(GLsizei n, const GLuint *ids)
98 {
99 DeleteQueries(n, ids);
100 }
101
102 inline void glGenQueries(GLsizei n, GLuint *ids)
103 {
104 GenQueries(n, ids);
105 }
106
107 inline void glGetInteger64v(GLenum pname, GLint64 *params)
108 {
109 GetInteger64v(pname, params);
110 }
111
112 inline void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params)
113 {
114 GetQueryObjectui64v(id, pname, params);
115 }
116
117 inline void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params)
118 {
119 GetQueryObjecti64v(id, pname, params);
120 }
121
122 inline void glQueryCounter(GLuint id, GLenum target)
123 {
124 QueryCounter(id, target);
125 }
126
127private:
128 // Core in OpenGL >=1.5
129 void (QOPENGLF_APIENTRYP GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params);
130 void (QOPENGLF_APIENTRYP GetQueryObjectiv)(GLuint id, GLenum pname, GLint *params);
131 void (QOPENGLF_APIENTRYP GetQueryiv)(GLenum target, GLenum pname, GLint *params);
132 void (QOPENGLF_APIENTRYP EndQuery)(GLenum target);
133 void (QOPENGLF_APIENTRYP BeginQuery)(GLenum target, GLuint id);
134 GLboolean (QOPENGLF_APIENTRYP IsQuery)(GLuint id);
135 void (QOPENGLF_APIENTRYP DeleteQueries)(GLsizei n, const GLuint *ids);
136 void (QOPENGLF_APIENTRYP GenQueries)(GLsizei n, GLuint *ids);
137
138 // Core in OpenGL >=3.2
139 void (QOPENGLF_APIENTRYP GetInteger64v)(GLenum pname, GLint64 *params);
140
141 // Core in OpenGL >=3.3 and provided by ARB_timer_query
142 void (QOPENGLF_APIENTRYP GetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 *params);
143 void (QOPENGLF_APIENTRYP GetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 *params);
144 void (QOPENGLF_APIENTRYP QueryCounter)(GLuint id, GLenum target);
145};
146
147QT_END_NAMESPACE
148
149#endif
150
151#endif // QOPENGLQUERYHELPER_P_H
QList< GLuint64 > intervals() const
QExtTimerQueryHelper * ext
QList< GLuint64 > samples() const
QOpenGLQueryHelper * core
QExtTimerQueryHelper * ext
#define GL_TIME_ELAPSED_EXT
#define GL_TIME_ELAPSED