KWin
Loading...
Searching...
No Matches
opengl_context_attribute_builder_test.cpp
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2017 Martin Flöser <mgraesslin@kde.org>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
11#include <QTest>
12#include <epoxy/egl.h>
13
14#include "config-kwin.h"
15#if HAVE_GLX
17#include <epoxy/glx.h>
18
19#ifndef GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV
20#define GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7
21#endif
22#endif
23
24using namespace KWin;
25
27{
28 Q_OBJECT
29private Q_SLOTS:
30 void testCtor();
31 void testRobust();
32 void testForwardCompatible();
33 void testProfile();
34 void testResetOnVideoMemoryPurge();
35 void testVersionMajor();
36 void testVersionMajorAndMinor();
37 void testHighPriority();
38 void testEgl_data();
39 void testEgl();
40 void testGles_data();
41 void testGles();
42 void testGlx_data();
43 void testGlx();
44};
45
47{
48public:
49 std::vector<int> build() const override;
50};
51
53{
54 return std::vector<int>();
55}
56
57void OpenGLContextAttributeBuilderTest::testCtor()
58{
60 QCOMPARE(builder.isVersionRequested(), false);
61 QCOMPARE(builder.majorVersion(), 0);
62 QCOMPARE(builder.minorVersion(), 0);
63 QCOMPARE(builder.isRobust(), false);
64 QCOMPARE(builder.isForwardCompatible(), false);
65 QCOMPARE(builder.isCoreProfile(), false);
66 QCOMPARE(builder.isCompatibilityProfile(), false);
67 QCOMPARE(builder.isResetOnVideoMemoryPurge(), false);
68 QCOMPARE(builder.isHighPriority(), false);
69}
70
71void OpenGLContextAttributeBuilderTest::testRobust()
72{
74 QCOMPARE(builder.isRobust(), false);
75 builder.setRobust(true);
76 QCOMPARE(builder.isRobust(), true);
77 builder.setRobust(false);
78 QCOMPARE(builder.isRobust(), false);
79}
80
81void OpenGLContextAttributeBuilderTest::testForwardCompatible()
82{
84 QCOMPARE(builder.isForwardCompatible(), false);
85 builder.setForwardCompatible(true);
86 QCOMPARE(builder.isForwardCompatible(), true);
87 builder.setForwardCompatible(false);
88 QCOMPARE(builder.isForwardCompatible(), false);
89}
90
91void OpenGLContextAttributeBuilderTest::testProfile()
92{
94 QCOMPARE(builder.isCoreProfile(), false);
95 QCOMPARE(builder.isCompatibilityProfile(), false);
96 builder.setCoreProfile(true);
97 QCOMPARE(builder.isCoreProfile(), true);
98 QCOMPARE(builder.isCompatibilityProfile(), false);
99 builder.setCompatibilityProfile(true);
100 QCOMPARE(builder.isCoreProfile(), false);
101 QCOMPARE(builder.isCompatibilityProfile(), true);
102 builder.setCoreProfile(true);
103 QCOMPARE(builder.isCoreProfile(), true);
104 QCOMPARE(builder.isCompatibilityProfile(), false);
105}
106
107void OpenGLContextAttributeBuilderTest::testResetOnVideoMemoryPurge()
108{
110 QCOMPARE(builder.isResetOnVideoMemoryPurge(), false);
111 builder.setResetOnVideoMemoryPurge(true);
112 QCOMPARE(builder.isResetOnVideoMemoryPurge(), true);
113 builder.setResetOnVideoMemoryPurge(false);
114 QCOMPARE(builder.isResetOnVideoMemoryPurge(), false);
115}
116
117void OpenGLContextAttributeBuilderTest::testHighPriority()
118{
120 QCOMPARE(builder.isHighPriority(), false);
121 builder.setHighPriority(true);
122 QCOMPARE(builder.isHighPriority(), true);
123 builder.setHighPriority(false);
124 QCOMPARE(builder.isHighPriority(), false);
125}
126
127void OpenGLContextAttributeBuilderTest::testVersionMajor()
128{
130 builder.setVersion(2);
131 QCOMPARE(builder.isVersionRequested(), true);
132 QCOMPARE(builder.majorVersion(), 2);
133 QCOMPARE(builder.minorVersion(), 0);
134 builder.setVersion(3);
135 QCOMPARE(builder.isVersionRequested(), true);
136 QCOMPARE(builder.majorVersion(), 3);
137 QCOMPARE(builder.minorVersion(), 0);
138}
139
140void OpenGLContextAttributeBuilderTest::testVersionMajorAndMinor()
141{
143 builder.setVersion(2, 1);
144 QCOMPARE(builder.isVersionRequested(), true);
145 QCOMPARE(builder.majorVersion(), 2);
146 QCOMPARE(builder.minorVersion(), 1);
147 builder.setVersion(3, 2);
148 QCOMPARE(builder.isVersionRequested(), true);
149 QCOMPARE(builder.majorVersion(), 3);
150 QCOMPARE(builder.minorVersion(), 2);
151}
152
153void OpenGLContextAttributeBuilderTest::testEgl_data()
154{
155 QTest::addColumn<bool>("requestVersion");
156 QTest::addColumn<int>("major");
157 QTest::addColumn<int>("minor");
158 QTest::addColumn<bool>("robust");
159 QTest::addColumn<bool>("forwardCompatible");
160 QTest::addColumn<bool>("coreProfile");
161 QTest::addColumn<bool>("compatibilityProfile");
162 QTest::addColumn<bool>("highPriority");
163 QTest::addColumn<std::vector<int>>("expectedAttribs");
164
165 QTest::newRow("fallback") << false << 0 << 0 << false << false << false << false << false << std::vector<int>{EGL_NONE};
166 QTest::newRow("legacy/robust")
167 << false << 0 << 0 << true << false << false << false << false
168 << std::vector<int>{
169 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, EGL_LOSE_CONTEXT_ON_RESET_KHR,
170 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR,
171 EGL_NONE};
172 QTest::newRow("legacy/robust/high priority")
173 << false << 0 << 0 << true << false << false << false << true
174 << std::vector<int>{
175 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, EGL_LOSE_CONTEXT_ON_RESET_KHR,
176 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR,
177 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
178 EGL_NONE};
179 QTest::newRow("core")
180 << true << 3 << 1 << false << false << false << false << false
181 << std::vector<int>{
182 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
183 EGL_CONTEXT_MINOR_VERSION_KHR, 1,
184 EGL_NONE};
185 QTest::newRow("core/high priority")
186 << true << 3 << 1 << false << false << false << false << true
187 << std::vector<int>{
188 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
189 EGL_CONTEXT_MINOR_VERSION_KHR, 1,
190 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
191 EGL_NONE};
192 QTest::newRow("core/robust")
193 << true << 3 << 1 << true << false << false << false << false
194 << std::vector<int>{
195 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
196 EGL_CONTEXT_MINOR_VERSION_KHR, 1,
197 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, EGL_LOSE_CONTEXT_ON_RESET_KHR,
198 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR,
199 EGL_NONE};
200 QTest::newRow("core/robust/high priority")
201 << true << 3 << 1 << true << false << false << false << true
202 << std::vector<int>{
203 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
204 EGL_CONTEXT_MINOR_VERSION_KHR, 1,
205 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, EGL_LOSE_CONTEXT_ON_RESET_KHR,
206 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR,
207 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
208 EGL_NONE};
209 QTest::newRow("core/robust/forward compatible")
210 << true << 3 << 1 << true << true << false << false << false
211 << std::vector<int>{
212 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
213 EGL_CONTEXT_MINOR_VERSION_KHR, 1,
214 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, EGL_LOSE_CONTEXT_ON_RESET_KHR,
215 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR | EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
216 EGL_NONE};
217 QTest::newRow("core/robust/forward compatible/high priority")
218 << true << 3 << 1 << true << true << false << false << true
219 << std::vector<int>{
220 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
221 EGL_CONTEXT_MINOR_VERSION_KHR, 1,
222 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, EGL_LOSE_CONTEXT_ON_RESET_KHR,
223 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR | EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
224 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
225 EGL_NONE};
226 QTest::newRow("core/forward compatible")
227 << true << 3 << 1 << false << true << false << false << false
228 << std::vector<int>{
229 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
230 EGL_CONTEXT_MINOR_VERSION_KHR, 1,
231 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
232 EGL_NONE};
233 QTest::newRow("core/forward compatible/high priority")
234 << true << 3 << 1 << false << true << false << false << true
235 << std::vector<int>{
236 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
237 EGL_CONTEXT_MINOR_VERSION_KHR, 1,
238 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
239 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
240 EGL_NONE};
241 QTest::newRow("core profile/forward compatible")
242 << true << 3 << 2 << false << true << true << false << false
243 << std::vector<int>{
244 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
245 EGL_CONTEXT_MINOR_VERSION_KHR, 2,
246 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
247 EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR,
248 EGL_NONE};
249 QTest::newRow("core profile/forward compatible/high priority")
250 << true << 3 << 2 << false << true << true << false << true
251 << std::vector<int>{
252 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
253 EGL_CONTEXT_MINOR_VERSION_KHR, 2,
254 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
255 EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR,
256 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
257 EGL_NONE};
258 QTest::newRow("compatibility profile/forward compatible")
259 << true << 3 << 2 << false << true << false << true << false
260 << std::vector<int>{
261 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
262 EGL_CONTEXT_MINOR_VERSION_KHR, 2,
263 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
264 EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR,
265 EGL_NONE};
266 QTest::newRow("compatibility profile/forward compatible/high priority")
267 << true << 3 << 2 << false << true << false << true << true
268 << std::vector<int>{
269 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
270 EGL_CONTEXT_MINOR_VERSION_KHR, 2,
271 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
272 EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR,
273 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
274 EGL_NONE};
275 QTest::newRow("core profile/robust/forward compatible")
276 << true << 3 << 2 << true << true << true << false << false
277 << std::vector<int>{
278 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
279 EGL_CONTEXT_MINOR_VERSION_KHR, 2,
280 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, EGL_LOSE_CONTEXT_ON_RESET_KHR,
281 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR | EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
282 EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR,
283 EGL_NONE};
284 QTest::newRow("core profile/robust/forward compatible/high priority")
285 << true << 3 << 2 << true << true << true << false << true
286 << std::vector<int>{
287 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
288 EGL_CONTEXT_MINOR_VERSION_KHR, 2,
289 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, EGL_LOSE_CONTEXT_ON_RESET_KHR,
290 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR | EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
291 EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR,
292 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
293 EGL_NONE};
294 QTest::newRow("compatibility profile/robust/forward compatible")
295 << true << 3 << 2 << true << true << false << true << false
296 << std::vector<int>{
297 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
298 EGL_CONTEXT_MINOR_VERSION_KHR, 2,
299 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, EGL_LOSE_CONTEXT_ON_RESET_KHR,
300 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR | EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
301 EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR,
302 EGL_NONE};
303 QTest::newRow("compatibility profile/robust/forward compatible/high priority")
304 << true << 3 << 2 << true << true << false << true << true
305 << std::vector<int>{
306 EGL_CONTEXT_MAJOR_VERSION_KHR, 3,
307 EGL_CONTEXT_MINOR_VERSION_KHR, 2,
308 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, EGL_LOSE_CONTEXT_ON_RESET_KHR,
309 EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR | EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR,
310 EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR,
311 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
312 EGL_NONE};
313}
314
315void OpenGLContextAttributeBuilderTest::testEgl()
316{
317 QFETCH(bool, requestVersion);
318 QFETCH(int, major);
319 QFETCH(int, minor);
320 QFETCH(bool, robust);
321 QFETCH(bool, forwardCompatible);
322 QFETCH(bool, coreProfile);
323 QFETCH(bool, compatibilityProfile);
324 QFETCH(bool, highPriority);
325
327 if (requestVersion) {
328 builder.setVersion(major, minor);
329 }
330 builder.setRobust(robust);
331 builder.setForwardCompatible(forwardCompatible);
332 builder.setCoreProfile(coreProfile);
333 builder.setCompatibilityProfile(compatibilityProfile);
334 builder.setHighPriority(highPriority);
335
336 auto attribs = builder.build();
337 QTEST(attribs, "expectedAttribs");
338}
339
340void OpenGLContextAttributeBuilderTest::testGles_data()
341{
342 QTest::addColumn<bool>("robust");
343 QTest::addColumn<bool>("highPriority");
344 QTest::addColumn<std::vector<int>>("expectedAttribs");
345
346 QTest::newRow("robust")
347 << true << false
348 << std::vector<int>{
349 EGL_CONTEXT_CLIENT_VERSION, 2,
350 EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT, EGL_TRUE,
351 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT, EGL_LOSE_CONTEXT_ON_RESET_EXT,
352 EGL_NONE};
353 QTest::newRow("robust/high priority")
354 << true << true
355 << std::vector<int>{
356 EGL_CONTEXT_CLIENT_VERSION, 2,
357 EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT, EGL_TRUE,
358 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT, EGL_LOSE_CONTEXT_ON_RESET_EXT,
359 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
360 EGL_NONE};
361 QTest::newRow("normal")
362 << false << false
363 << std::vector<int>{
364 EGL_CONTEXT_CLIENT_VERSION, 2,
365 EGL_NONE};
366 QTest::newRow("normal/high priority")
367 << false << true
368 << std::vector<int>{
369 EGL_CONTEXT_CLIENT_VERSION, 2,
370 EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG,
371 EGL_NONE};
372}
373
374void OpenGLContextAttributeBuilderTest::testGles()
375{
376 QFETCH(bool, robust);
377 QFETCH(bool, highPriority);
378
380 builder.setVersion(2);
381 builder.setRobust(robust);
382 builder.setHighPriority(highPriority);
383
384 auto attribs = builder.build();
385 QTEST(attribs, "expectedAttribs");
386}
387
388void OpenGLContextAttributeBuilderTest::testGlx_data()
389{
390#if HAVE_GLX
391 QTest::addColumn<bool>("requestVersion");
392 QTest::addColumn<int>("major");
393 QTest::addColumn<int>("minor");
394 QTest::addColumn<bool>("robust");
395 QTest::addColumn<bool>("videoPurge");
396 QTest::addColumn<std::vector<int>>("expectedAttribs");
397
398 QTest::newRow("fallback")
399 << true << 2 << 1 << false << false
400 << std::vector<int>{
401 GLX_CONTEXT_MAJOR_VERSION_ARB, 2,
402 GLX_CONTEXT_MINOR_VERSION_ARB, 1,
403 0};
404 QTest::newRow("legacy/robust")
405 << false << 0 << 0 << true << false
406 << std::vector<int>{
407 GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB,
408 GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, GLX_LOSE_CONTEXT_ON_RESET_ARB,
409 0};
410 QTest::newRow("legacy/robust/videoPurge")
411 << false << 0 << 0 << true << true
412 << std::vector<int>{
413 GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB,
414 GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, GLX_LOSE_CONTEXT_ON_RESET_ARB,
416 0};
417 QTest::newRow("core")
418 << true << 3 << 1 << false << false
419 << std::vector<int>{
420 GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
421 GLX_CONTEXT_MINOR_VERSION_ARB, 1,
422 0};
423 QTest::newRow("core/robust")
424 << true << 3 << 1 << true << false
425 << std::vector<int>{
426 GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
427 GLX_CONTEXT_MINOR_VERSION_ARB, 1,
428 GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB,
429 GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, GLX_LOSE_CONTEXT_ON_RESET_ARB,
430 0};
431 QTest::newRow("core/robust/videoPurge")
432 << true << 3 << 1 << true << true
433 << std::vector<int>{
434 GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
435 GLX_CONTEXT_MINOR_VERSION_ARB, 1,
436 GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB,
437 GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, GLX_LOSE_CONTEXT_ON_RESET_ARB,
439 0};
440#endif
441}
442
443void OpenGLContextAttributeBuilderTest::testGlx()
444{
445#if HAVE_GLX
446 QFETCH(bool, requestVersion);
447 QFETCH(int, major);
448 QFETCH(int, minor);
449 QFETCH(bool, robust);
450 QFETCH(bool, videoPurge);
451
453 if (requestVersion) {
454 builder.setVersion(major, minor);
455 }
456 builder.setRobust(robust);
457 builder.setResetOnVideoMemoryPurge(videoPurge);
458
459 auto attribs = builder.build();
460 QTEST(attribs, "expectedAttribs");
461#endif
462}
463
464QTEST_GUILESS_MAIN(OpenGLContextAttributeBuilderTest)
465#include "opengl_context_attribute_builder_test.moc"
std::vector< int > build() const override