MythTV master
mythopenglperf.h
Go to the documentation of this file.
1#ifndef MYTHOPENGLPERF_H
2#define MYTHOPENGLPERF_H
3
4// Qt
5#include <QVector>
6#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
7#include <QOpenGLTimeMonitor>
8#else
9#include <QtOpenGL/QOpenGLTimeMonitor>
10#endif
11
12// QOpenGLTimeMonitor is not available with Qt GLES2 builds
13#if defined(QT_OPENGL_ES_2) || (QT_FEATURE_opengles2 == 1)
14
15#ifndef GLuint64
16using GLuint64 = uint64_t;
17#endif
18
19class QOpenGLTimeMonitor
20{
21 public:
22 QOpenGLTimeMonitor() {};
23 void setSampleCount(int) {};
24 int sampleCount() const { return 0; };
25 bool create() { return false; };
26 bool isCreated() const { return false; };
27 int recordSample() { return 0; };
28 bool isResultAvailable() const { return false; };
29 QVector<GLuint64> waitForIntervals() const { return QVector<GLuint64>(); };
30 void reset() {};
31};
32#endif
33
34// MythTV
35#include "libmythui/mythuiexp.h"
36
37class MUI_PUBLIC MythOpenGLPerf : public QOpenGLTimeMonitor
38{
39 public:
40 MythOpenGLPerf(QString Name, QVector<QString> Names, int SampleCount = 30);
41 void RecordSample (void);
42 void LogSamples (void);
43 int GetTimersRunning(void) const;
44
45 private:
46 QString m_name;
47 int m_sampleCount { 0 };
48 int m_totalSamples { 30 };
49 bool m_timersReady { true };
50 int m_timersRunning { 0 };
51 QVector<GLuint64> m_timerData { 0 };
52 QVector<QString> m_timerNames;
53};
54
55#endif // MYTHOPENGLPERF_H
A simple overload of QOpenGLTimeMonitor to record and log OpenGL execution intervals.
QVector< QString > m_timerNames
#define MUI_PUBLIC
Definition: mythuiexp.h:9