qopengl.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/gui/opengl/qopengl.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8typedef const GLubyte * ( * qt_glGetStringi)(GLenum, GLuint);-
9-
10-
11QOpenGLExtensionMatcher::QOpenGLExtensionMatcher()-
12{-
13 QOpenGLContext *ctx = QOpenGLContext::currentContext();-
14 QOpenGLFunctions *funcs = ctx->functions();-
15 const char *extensionStr = 0;-
16-
17 if (ctx->isOpenGLES()
ctx->isOpenGLES()Description
TRUEnever evaluated
FALSEnever evaluated
|| ctx->format().majorVersion() < 3
ctx->format()....rVersion() < 3Description
TRUEnever evaluated
FALSEnever evaluated
)
0
18 extensionStr = reinterpret_cast<const char *>(funcs->glGetString(0x1F03));
never executed: extensionStr = reinterpret_cast<const char *>(funcs->glGetString(0x1F03));
0
19-
20 if (extensionStr
extensionStrDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
21 QByteArray ba(extensionStr);-
22 QList<QByteArray> extensions = ba.split(' ');-
23 m_extensions = extensions.toSet();-
24 }
never executed: end of block
else {
0
25-
26-
27 while (funcs->glGetError()
funcs->glGetError()Description
TRUEnever evaluated
FALSEnever evaluated
) {}
never executed: end of block
0
28-
29 if (ctx
ctxDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
30 qt_glGetStringi glGetStringi = (qt_glGetStringi)ctx->getProcAddress("glGetStringi");-
31-
32 if (!glGetStringi
!glGetStringiDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
33 return;
never executed: return;
0
34-
35 GLint numExtensions = 0;-
36 funcs->glGetIntegerv(0x821D, &numExtensions);-
37-
38 for (int i = 0; i < numExtensions
i < numExtensionsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
39 const char *str = reinterpret_cast<const char *>(glGetStringi(0x1F03, i));-
40 m_extensions.insert(str);-
41 }
never executed: end of block
0
42 }
never executed: end of block
0
43-
44 }
never executed: end of block
0
45}-
46QDebug operator<<(QDebug d, const QOpenGLConfig::Gpu &g)-
47{-
48 QDebugStateSaver s(d);-
49 d.nospace();-
50 d << "Gpu(";-
51 if (g.isValid()
g.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
52 d << "vendor=" << hex << showbase <<g.vendorId << ", device=" << g.deviceId-
53 << "version=" << g.driverVersion;-
54 }
never executed: end of block
else {
0
55 d << 0;-
56 }
never executed: end of block
0
57 d << ')';-
58 return
never executed: return d;
d;
never executed: return d;
0
59}-
60-
61static inline QString valueKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "value")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "value" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "value")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "value" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "value")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "value" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
62static inline QString opKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "op")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "op" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "op")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "op" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "op")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "op" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
63static inline QString versionKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "version")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "version" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "version")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "version" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "version")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "version" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
64static inline QString releaseKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "release")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "release" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "release")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "release" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "release")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "release" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
65static inline QString typeKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "type")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "type" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "type")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "type" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "type")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "type" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
66static inline QString osKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "os")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "os" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "os")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "os" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "os")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "os" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
67static inline QString vendorIdKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "vendor_id")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "vendor_id" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "vendor_id")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "vendor_id" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "vendor_id")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "vendor_id" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
68static inline QString glVendorKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "gl_vendor")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "gl_vendor" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "gl_vendor")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "gl_vendor" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "gl_vendor")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "gl_vendor" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
69static inline QString deviceIdKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "device_id")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "device_id" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "device_id")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "device_id" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "device_id")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "device_id" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
70static inline QString driverVersionKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "driver_version")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "driver_version" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "driver_version")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "driver_version" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "driver_version")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "driver_version" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
71static inline QString driverDescriptionKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "driver_description")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "driver_description" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "driver_description")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "driver_description" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "driver_description")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "driver_description" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
72static inline QString featuresKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "features")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "features" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "features")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "features" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "features")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "features" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
73static inline QString idKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "id")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "id" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "id")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "id" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "id")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "id" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
74static inline QString descriptionKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "description")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "description" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "description")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "description" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "description")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "description" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
75static inline QString exceptionsKey() { return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "exceptions")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "exceptions" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "exceptions")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "exceptions" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "exceptions")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "exceptions" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
}
0
76-
77typedef QJsonArray::ConstIterator JsonArrayConstIt;-
78-
79static inline bool contains(const QJsonArray &haystack, unsigned needle)-
80{-
81 for (JsonArrayConstIt it = haystack.constBegin(), cend = haystack.constEnd(); it != cend
it != cendDescription
TRUEnever evaluated
FALSEnever evaluated
; ++it) {
0
82 if (needle == it->toString().toUInt(nullptr, 0)
needle == it->...nt(nullptr, 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
83 return
never executed: return true;
true;
never executed: return true;
0
84 }
never executed: end of block
0
85 return
never executed: return false;
false;
never executed: return false;
0
86}-
87-
88static inline bool contains(const QJsonArray &haystack, const QString &needle)-
89{-
90 for (JsonArrayConstIt it = haystack.constBegin(), cend = haystack.constEnd(); it != cend
it != cendDescription
TRUEnever evaluated
FALSEnever evaluated
; ++it) {
0
91 if (needle == it->toString()
needle == it->toString()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
92 return
never executed: return true;
true;
never executed: return true;
0
93 }
never executed: end of block
0
94 return
never executed: return false;
false;
never executed: return false;
0
95}-
96-
97namespace {-
98enum Operator { NotEqual, LessThan, LessEqualThan, Equals, GreaterThan, GreaterEqualThan };-
99static const char operators[][3] = {"!=", "<", "<=", "=", ">", ">="};-
100-
101-
102-
103struct VersionTerm {-
104 VersionTerm() : op(NotEqual) {}
never executed: end of block
0
105 static VersionTerm fromJson(const QJsonValue &v);-
106 bool isNull() const { return
never executed: return number.isNull();
number.isNull();
never executed: return number.isNull();
}
0
107 bool matches(const QVersionNumber &other) const;-
108-
109 QVersionNumber number;-
110 Operator op;-
111};-
112-
113bool VersionTerm::matches(const QVersionNumber &other) const-
114{-
115 if (isNull()
isNull()Description
TRUEnever evaluated
FALSEnever evaluated
|| other.isNull()
other.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
116 QMessageLogger(__FILE__, 187, __PRETTY_FUNCTION__).warning("called with invalid parameters");-
117 return
never executed: return false;
false;
never executed: return false;
0
118 }-
119 switch (op) {-
120 case
never executed: case NotEqual:
NotEqual:
never executed: case NotEqual:
0
121 return
never executed: return other != number;
other != number;
never executed: return other != number;
0
122 case
never executed: case LessThan:
LessThan:
never executed: case LessThan:
0
123 return
never executed: return other < number;
other < number;
never executed: return other < number;
0
124 case
never executed: case LessEqualThan:
LessEqualThan:
never executed: case LessEqualThan:
0
125 return
never executed: return other <= number;
other <= number;
never executed: return other <= number;
0
126 case
never executed: case Equals:
Equals:
never executed: case Equals:
0
127 return
never executed: return other == number;
other == number;
never executed: return other == number;
0
128 case
never executed: case GreaterThan:
GreaterThan:
never executed: case GreaterThan:
0
129 return
never executed: return other > number;
other > number;
never executed: return other > number;
0
130 case
never executed: case GreaterEqualThan:
GreaterEqualThan:
never executed: case GreaterEqualThan:
0
131 return
never executed: return other >= number;
other >= number;
never executed: return other >= number;
0
132 }-
133 return
never executed: return false;
false;
never executed: return false;
0
134}-
135-
136VersionTerm VersionTerm::fromJson(const QJsonValue &v)-
137{-
138 VersionTerm result;-
139 if (!v.isObject()
!v.isObject()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
140 return
never executed: return result;
result;
never executed: return result;
0
141 const QJsonObject o = v.toObject();-
142 result.number = QVersionNumber::fromString(o.value(valueKey()).toString());-
143 const QString opS = o.value(opKey()).toString();-
144 for (size_t i = 0; i < sizeof(operators) / sizeof(operators[0])
i < sizeof(ope...(operators[0])Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
145 if (opS == QLatin1String(operators[i])
opS == QLatin1...(operators[i])Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
146 result.op = static_cast<Operator>(i);-
147 break;
never executed: break;
0
148 }-
149 }
never executed: end of block
0
150 return
never executed: return result;
result;
never executed: return result;
0
151}-
152-
153-
154-
155struct OsTypeTerm-
156{-
157 static OsTypeTerm fromJson(const QJsonValue &v);-
158 static QString hostOs();-
159 static QVersionNumber hostKernelVersion() { return
never executed: return QVersionNumber::fromString(QSysInfo::kernelVersion());
QVersionNumber::fromString(QSysInfo::kernelVersion());
never executed: return QVersionNumber::fromString(QSysInfo::kernelVersion());
}
0
160 static QString hostOsRelease() {-
161 QString ver;-
162 return
never executed: return ver;
ver;
never executed: return ver;
0
163 }-
164-
165 bool isNull() const { return
never executed: return type.isEmpty();
type.isEmpty();
never executed: return type.isEmpty();
}
0
166 bool matches(const QString &osName, const QVersionNumber &kernelVersion, const QString &osRelease) const-
167 {-
168 if (isNull()
isNull()Description
TRUEnever evaluated
FALSEnever evaluated
|| osName.isEmpty()
osName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| kernelVersion.isNull()
kernelVersion.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
169 QMessageLogger(__FILE__, 265, __PRETTY_FUNCTION__).warning("called with invalid parameters");-
170 return
never executed: return false;
false;
never executed: return false;
0
171 }-
172 if (type != osName
type != osNameDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
173 return
never executed: return false;
false;
never executed: return false;
0
174 if (!versionTerm.isNull()
!versionTerm.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
&& !versionTerm.matches(kernelVersion)
!versionTerm.m...kernelVersion)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
175 return
never executed: return false;
false;
never executed: return false;
0
176-
177 if (!release.isEmpty()
!release.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
&& !contains(release, osRelease)
!contains(release, osRelease)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
178 return
never executed: return false;
false;
never executed: return false;
0
179 return
never executed: return true;
true;
never executed: return true;
0
180 }-
181-
182 QString type;-
183 VersionTerm versionTerm;-
184 QJsonArray release;-
185};-
186-
187OsTypeTerm OsTypeTerm::fromJson(const QJsonValue &v)-
188{-
189 OsTypeTerm result;-
190 if (!v.isObject()
!v.isObject()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
191 return
never executed: return result;
result;
never executed: return result;
0
192 const QJsonObject o = v.toObject();-
193 result.type = o.value(typeKey()).toString();-
194 result.versionTerm = VersionTerm::fromJson(o.value(versionKey()));-
195 result.release = o.value(releaseKey()).toArray();-
196 return
never executed: return result;
result;
never executed: return result;
0
197}-
198-
199QString OsTypeTerm::hostOs()-
200{-
201-
202-
203-
204-
205 return
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "linux")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "linux" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
([]() -> QString { enum { Size = sizeof(u"" "linux")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "linux" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}());
never executed: return ([]() -> QString { enum { Size = sizeof(u"" "linux")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "linux" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
0
206-
207-
208-
209-
210-
211-
212-
213}-
214}-
215-
216static QString msgSyntaxWarning(const QJsonObject &object, const QString &what)-
217{-
218 QString result;-
219 QTextStream(&result) << "Id " << object.value(idKey()).toInt()-
220 << " (\"" << object.value(descriptionKey()).toString()-
221 << "\"): " << what;-
222 return
never executed: return result;
result;
never executed: return result;
0
223}-
224-
225-
226-
227-
228static bool matches(const QJsonObject &object,-
229 const QString &osName,-
230 const QVersionNumber &kernelVersion,-
231 const QString &osRelease,-
232 const QOpenGLConfig::Gpu &gpu)-
233{-
234 const OsTypeTerm os = OsTypeTerm::fromJson(object.value(osKey()));-
235 if (!os.isNull()
!os.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
&& !os.matches(osName, kernelVersion, osRelease)
!os.matches(os...on, osRelease)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
236 return
never executed: return false;
false;
never executed: return false;
0
237-
238 const QJsonValue exceptionsV = object.value(exceptionsKey());-
239 if (exceptionsV.isArray()
exceptionsV.isArray()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
240 const QJsonArray exceptionsA = exceptionsV.toArray();-
241 for (JsonArrayConstIt it = exceptionsA.constBegin(), cend = exceptionsA.constEnd(); it != cend
it != cendDescription
TRUEnever evaluated
FALSEnever evaluated
; ++it) {
0
242 if (matches(it->toObject(), osName, kernelVersion, osRelease, gpu)
matches(it->to...sRelease, gpu)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
243 return
never executed: return false;
false;
never executed: return false;
0
244 }
never executed: end of block
0
245 }
never executed: end of block
0
246-
247 const QJsonValue vendorV = object.value(vendorIdKey());-
248 if (vendorV.isString()
vendorV.isString()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
249 if (gpu.vendorId != vendorV.toString().toUInt(nullptr, 0)
gpu.vendorId !...nt(nullptr, 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
250 return
never executed: return false;
false;
never executed: return false;
0
251 }
never executed: end of block
else {
0
252 if (object.contains(glVendorKey())
object.contains(glVendorKey())Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
253 const QByteArray glVendorV = object.value(glVendorKey()).toString().toUtf8();-
254 if (!gpu.glVendor.contains(glVendorV)
!gpu.glVendor....ins(glVendorV)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
255 return
never executed: return false;
false;
never executed: return false;
0
256 }
never executed: end of block
0
257 }
never executed: end of block
0
258-
259 if (gpu.deviceId
gpu.deviceIdDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
260 const QJsonValue deviceIdV = object.value(deviceIdKey());-
261 switch (deviceIdV.type()) {-
262 case
never executed: case QJsonValue::Array:
QJsonValue::Array:
never executed: case QJsonValue::Array:
0
263 if (!contains(deviceIdV.toArray(), gpu.deviceId)
!contains(devi... gpu.deviceId)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
264 return
never executed: return false;
false;
never executed: return false;
0
265 break;
never executed: break;
0
266 case
never executed: case QJsonValue::Undefined:
QJsonValue::Undefined:
never executed: case QJsonValue::Undefined:
0
267 case
never executed: case QJsonValue::Null:
QJsonValue::Null:
never executed: case QJsonValue::Null:
0
268 break;
never executed: break;
0
269 default
never executed: default:
:
never executed: default:
0
270 QMessageLogger(__FILE__, 366, __PRETTY_FUNCTION__).warning().noquote()-
271 << msgSyntaxWarning(object,-
272 QLatin1String("Device ID must be of type array."));-
273 }
never executed: end of block
0
274 }-
275 if (!gpu.driverVersion.isNull()
!gpu.driverVersion.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
276 const QJsonValue driverVersionV = object.value(driverVersionKey());-
277 switch (driverVersionV.type()) {-
278 case
never executed: case QJsonValue::Object:
QJsonValue::Object:
never executed: case QJsonValue::Object:
0
279 if (!VersionTerm::fromJson(driverVersionV).matches(gpu.driverVersion)
!VersionTerm::...driverVersion)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
280 return
never executed: return false;
false;
never executed: return false;
0
281 break;
never executed: break;
0
282 case
never executed: case QJsonValue::Undefined:
QJsonValue::Undefined:
never executed: case QJsonValue::Undefined:
0
283 case
never executed: case QJsonValue::Null:
QJsonValue::Null:
never executed: case QJsonValue::Null:
0
284 break;
never executed: break;
0
285 default
never executed: default:
:
never executed: default:
0
286 QMessageLogger(__FILE__, 382, __PRETTY_FUNCTION__).warning().noquote()-
287 << msgSyntaxWarning(object,-
288 QLatin1String("Driver version must be of type object."));-
289 }
never executed: end of block
0
290 }-
291-
292 if (!gpu.driverDescription.isEmpty()
!gpu.driverDes...tion.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
293 const QJsonValue driverDescriptionV = object.value(driverDescriptionKey());-
294 if (driverDescriptionV.isString()
driverDescriptionV.isString()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
295 if (!gpu.driverDescription.contains(driverDescriptionV.toString().toUtf8())
!gpu.driverDes...ng().toUtf8())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
296 return
never executed: return false;
false;
never executed: return false;
0
297 }
never executed: end of block
0
298 }
never executed: end of block
0
299-
300 return
never executed: return true;
true;
never executed: return true;
0
301}-
302-
303static bool readGpuFeatures(const QOpenGLConfig::Gpu &gpu,-
304 const QString &osName,-
305 const QVersionNumber &kernelVersion,-
306 const QString &osRelease,-
307 const QJsonDocument &doc,-
308 QSet<QString> *result,-
309 QString *errorMessage)-
310{-
311 result->clear();-
312 errorMessage->clear();-
313 const QJsonValue entriesV = doc.object().value(([]() -> QString { enum { Size = sizeof(u"" "entries")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "entries" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}()));
0
314 if (!entriesV.isArray()
!entriesV.isArray()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
315 *errorMessage = QLatin1String("No entries read.");-
316 return
never executed: return false;
false;
never executed: return false;
0
317 }-
318-
319 const QJsonArray entriesA = entriesV.toArray();-
320 for (JsonArrayConstIt eit = entriesA.constBegin(), ecend = entriesA.constEnd(); eit != ecend
eit != ecendDescription
TRUEnever evaluated
FALSEnever evaluated
; ++eit) {
0
321 if (eit->isObject()
eit->isObject()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
322 const QJsonObject object = eit->toObject();-
323 if (matches(object, osName, kernelVersion, osRelease, gpu)
matches(object...sRelease, gpu)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
324 const QJsonValue featuresListV = object.value(featuresKey());-
325 if (featuresListV.isArray()
featuresListV.isArray()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
326 const QJsonArray featuresListA = featuresListV.toArray();-
327 for (JsonArrayConstIt fit = featuresListA.constBegin(), fcend = featuresListA.constEnd(); fit != fcend
fit != fcendDescription
TRUEnever evaluated
FALSEnever evaluated
; ++fit)
0
328 result->insert(fit->toString());
never executed: result->insert(fit->toString());
0
329 }
never executed: end of block
0
330 }
never executed: end of block
0
331 }
never executed: end of block
0
332 }
never executed: end of block
0
333 return
never executed: return true;
true;
never executed: return true;
0
334}-
335-
336static bool readGpuFeatures(const QOpenGLConfig::Gpu &gpu,-
337 const QString &osName,-
338 const QVersionNumber &kernelVersion,-
339 const QString &osRelease,-
340 const QByteArray &jsonAsciiData,-
341 QSet<QString> *result, QString *errorMessage)-
342{-
343 result->clear();-
344 errorMessage->clear();-
345 QJsonParseError error;-
346 const QJsonDocument document = QJsonDocument::fromJson(jsonAsciiData, &error);-
347 if (document.isNull()
document.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
348 const int lineNumber = 1 + jsonAsciiData.left(error.offset).count('\n');-
349 QTextStream str(errorMessage);-
350 str << "Failed to parse data: \"" << error.errorString()-
351 << "\" at line " << lineNumber << " (offset: "-
352 << error.offset << ").";-
353 return
never executed: return false;
false;
never executed: return false;
0
354 }-
355 return
never executed: return readGpuFeatures(gpu, osName, kernelVersion, osRelease, document, result, errorMessage);
readGpuFeatures(gpu, osName, kernelVersion, osRelease, document, result, errorMessage);
never executed: return readGpuFeatures(gpu, osName, kernelVersion, osRelease, document, result, errorMessage);
0
356}-
357-
358static bool readGpuFeatures(const QOpenGLConfig::Gpu &gpu,-
359 const QString &osName,-
360 const QVersionNumber &kernelVersion,-
361 const QString &osRelease,-
362 const QString &fileName,-
363 QSet<QString> *result, QString *errorMessage)-
364{-
365 result->clear();-
366 errorMessage->clear();-
367 QFile file(fileName);-
368 if (!file.open(QIODevice::ReadOnly)
!file.open(QIO...ice::ReadOnly)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
369 QTextStream str(errorMessage);-
370 str << "Cannot open \"" << QDir::toNativeSeparators(fileName) << "\": "-
371 << file.errorString();-
372 return
never executed: return false;
false;
never executed: return false;
0
373 }-
374 const bool success = readGpuFeatures(gpu, osName, kernelVersion, osRelease, file.readAll(), result, errorMessage);-
375 if (!success
!successDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
376 errorMessage->prepend(QLatin1String("Error reading \"")-
377 + QDir::toNativeSeparators(fileName)-
378 + QLatin1String("\": "));-
379 }
never executed: end of block
0
380 return
never executed: return success;
success;
never executed: return success;
0
381}-
382-
383QSet<QString> QOpenGLConfig::gpuFeatures(const QOpenGLConfig::Gpu &gpu,-
384 const QString &osName,-
385 const QVersionNumber &kernelVersion,-
386 const QString &osRelease,-
387 const QJsonDocument &doc)-
388{-
389 QSet<QString> result;-
390 QString errorMessage;-
391 if (!readGpuFeatures(gpu, osName, kernelVersion, osRelease, doc, &result, &errorMessage)
!readGpuFeatur...&errorMessage)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
392 QMessageLogger(__FILE__, 488, __PRETTY_FUNCTION__).warning().noquote() << errorMessage;
never executed: QMessageLogger(__FILE__, 488, __PRETTY_FUNCTION__).warning().noquote() << errorMessage;
0
393 return
never executed: return result;
result;
never executed: return result;
0
394}-
395-
396QSet<QString> QOpenGLConfig::gpuFeatures(const QOpenGLConfig::Gpu &gpu,-
397 const QString &osName,-
398 const QVersionNumber &kernelVersion,-
399 const QString &osRelease,-
400 const QString &fileName)-
401{-
402 QSet<QString> result;-
403 QString errorMessage;-
404 if (!readGpuFeatures(gpu, osName, kernelVersion, osRelease, fileName, &result, &errorMessage)
!readGpuFeatur...&errorMessage)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
405 QMessageLogger(__FILE__, 501, __PRETTY_FUNCTION__).warning().noquote() << errorMessage;
never executed: QMessageLogger(__FILE__, 501, __PRETTY_FUNCTION__).warning().noquote() << errorMessage;
0
406 return
never executed: return result;
result;
never executed: return result;
0
407}-
408-
409QSet<QString> QOpenGLConfig::gpuFeatures(const Gpu &gpu, const QJsonDocument &doc)-
410{-
411 return
never executed: return gpuFeatures(gpu, OsTypeTerm::hostOs(), OsTypeTerm::hostKernelVersion(), OsTypeTerm::hostOsRelease(), doc);
gpuFeatures(gpu, OsTypeTerm::hostOs(), OsTypeTerm::hostKernelVersion(), OsTypeTerm::hostOsRelease(), doc);
never executed: return gpuFeatures(gpu, OsTypeTerm::hostOs(), OsTypeTerm::hostKernelVersion(), OsTypeTerm::hostOsRelease(), doc);
0
412}-
413-
414QSet<QString> QOpenGLConfig::gpuFeatures(const Gpu &gpu, const QString &fileName)-
415{-
416 return
never executed: return gpuFeatures(gpu, OsTypeTerm::hostOs(), OsTypeTerm::hostKernelVersion(), OsTypeTerm::hostOsRelease(), fileName);
gpuFeatures(gpu, OsTypeTerm::hostOs(), OsTypeTerm::hostKernelVersion(), OsTypeTerm::hostOsRelease(), fileName);
never executed: return gpuFeatures(gpu, OsTypeTerm::hostOs(), OsTypeTerm::hostKernelVersion(), OsTypeTerm::hostOsRelease(), fileName);
0
417}-
418-
419QOpenGLConfig::Gpu QOpenGLConfig::Gpu::fromContext()-
420{-
421 QOpenGLContext *ctx = QOpenGLContext::currentContext();-
422 QScopedPointer<QOpenGLContext> tmpContext;-
423 QScopedPointer<QOffscreenSurface> tmpSurface;-
424 if (!ctx
!ctxDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
425 tmpContext.reset(new QOpenGLContext);-
426 if (!tmpContext->create()
!tmpContext->create()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
427 QMessageLogger(__FILE__, 523, __PRETTY_FUNCTION__).warning("QOpenGLConfig::Gpu::fromContext: Failed to create temporary context");-
428 return
never executed: return QOpenGLConfig::Gpu();
QOpenGLConfig::Gpu();
never executed: return QOpenGLConfig::Gpu();
0
429 }-
430 tmpSurface.reset(new QOffscreenSurface);-
431 tmpSurface->setFormat(tmpContext->format());-
432 tmpSurface->create();-
433 tmpContext->makeCurrent(tmpSurface.data());-
434 }
never executed: end of block
0
435-
436 QOpenGLConfig::Gpu gpu;-
437 ctx = QOpenGLContext::currentContext();-
438 const GLubyte *p = ctx->functions()->glGetString(0x1F00);-
439 if (p
pDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
440 gpu.glVendor = QByteArray(reinterpret_cast<const char *>(p));
never executed: gpu.glVendor = QByteArray(reinterpret_cast<const char *>(p));
0
441-
442 return
never executed: return gpu;
gpu;
never executed: return gpu;
0
443}-
444-
445__attribute__((visibility("default"))) std::set<QByteArray> *qgpu_features(const QString &filename)-
446{-
447 const QSet<QString> features = QOpenGLConfig::gpuFeatures(QOpenGLConfig::Gpu::fromContext(), filename);-
448 std::set<QByteArray> *result = new std::set<QByteArray>;-
449 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(features)>::type> _container_((features)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (const QString &feature = *_container_.i; _container_.control; _container_.control = 0)-
450 result->insert(feature.toUtf8());
never executed: result->insert(feature.toUtf8());
0
451 return
never executed: return result;
result;
never executed: return result;
0
452}-
453-
454-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9