1 //
2 // Copyright 2014 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6
7 #include "test_utils/angle_test_configs.h"
8
9 #include "common/platform.h"
10 #include "common/string_utils.h"
11 #include "util/util_gl.h"
12
13 #include <algorithm>
14 #include <cctype>
15
16 namespace angle
17 {
18 namespace
19 {
AppendCapitalizedFeature(std::ostream & stream,Feature feature)20 void AppendCapitalizedFeature(std::ostream &stream, Feature feature)
21 {
22 const char *name = GetFeatureName(feature);
23
24 if (name == nullptr)
25 {
26 stream << "InternalError";
27 return;
28 }
29
30 const std::string camelCase = angle::ToCamelCase(name);
31
32 stream << static_cast<char>(std::toupper(camelCase[0])) << (camelCase.c_str() + 1);
33 }
34
HasFeatureOverride(const std::vector<Feature> & overrides,Feature feature)35 bool HasFeatureOverride(const std::vector<Feature> &overrides, Feature feature)
36 {
37 return std::find(overrides.begin(), overrides.end(), feature) != overrides.end();
38 }
39 } // namespace
40
PlatformParameters()41 PlatformParameters::PlatformParameters() : PlatformParameters(2, 0, GLESDriverType::AngleEGL) {}
42
PlatformParameters(EGLint majorVersion,EGLint minorVersion,const EGLPlatformParameters & eglPlatformParameters)43 PlatformParameters::PlatformParameters(EGLint majorVersion,
44 EGLint minorVersion,
45 const EGLPlatformParameters &eglPlatformParameters)
46 : driver(GLESDriverType::AngleEGL),
47 noFixture(false),
48 eglParameters(eglPlatformParameters),
49 majorVersion(majorVersion),
50 minorVersion(minorVersion)
51 {
52 initDefaultParameters();
53 }
54
PlatformParameters(EGLint majorVersion,EGLint minorVersion,GLESDriverType driver)55 PlatformParameters::PlatformParameters(EGLint majorVersion,
56 EGLint minorVersion,
57 GLESDriverType driver)
58 : driver(driver), noFixture(false), majorVersion(majorVersion), minorVersion(minorVersion)
59 {
60 initDefaultParameters();
61 }
62
getRenderer() const63 EGLint PlatformParameters::getRenderer() const
64 {
65 return eglParameters.renderer;
66 }
67
getDeviceType() const68 EGLint PlatformParameters::getDeviceType() const
69 {
70 return eglParameters.deviceType;
71 }
72
isSwiftshader() const73 bool PlatformParameters::isSwiftshader() const
74 {
75 return eglParameters.deviceType == EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE;
76 }
77
isVulkan() const78 bool PlatformParameters::isVulkan() const
79 {
80 return eglParameters.renderer == EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE;
81 }
82
isANGLE() const83 bool PlatformParameters::isANGLE() const
84 {
85 return driver == GLESDriverType::AngleEGL;
86 }
87
initDefaultParameters()88 void PlatformParameters::initDefaultParameters()
89 {
90 // Default debug layers to enabled in tests.
91 eglParameters.debugLayersEnabled = EGL_TRUE;
92 }
93
isEnabled(Feature feature) const94 bool PlatformParameters::isEnabled(Feature feature) const
95 {
96 return HasFeatureOverride(eglParameters.enabledFeatureOverrides, feature);
97 }
98
isDisabled(Feature feature) const99 bool PlatformParameters::isDisabled(Feature feature) const
100 {
101 return HasFeatureOverride(eglParameters.disabledFeatureOverrides, feature);
102 }
103
operator <(const PlatformParameters & a,const PlatformParameters & b)104 bool operator<(const PlatformParameters &a, const PlatformParameters &b)
105 {
106 return a.tie() < b.tie();
107 }
108
operator ==(const PlatformParameters & a,const PlatformParameters & b)109 bool operator==(const PlatformParameters &a, const PlatformParameters &b)
110 {
111 return a.tie() == b.tie();
112 }
113
operator !=(const PlatformParameters & a,const PlatformParameters & b)114 bool operator!=(const PlatformParameters &a, const PlatformParameters &b)
115 {
116 return a.tie() != b.tie();
117 }
118
GetRendererName(EGLint renderer)119 const char *GetRendererName(EGLint renderer)
120 {
121 switch (renderer)
122 {
123 case EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE:
124 return "Default";
125 case EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE:
126 return "D3D9";
127 case EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE:
128 return "D3D11";
129 case EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE:
130 return "Metal";
131 case EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE:
132 return "Null";
133 case EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE:
134 return "OpenGL";
135 case EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE:
136 return "OpenGLES";
137 case EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE:
138 return "Vulkan";
139 default:
140 return "Undefined";
141 }
142 }
143
operator <<(std::ostream & stream,const PlatformParameters & pp)144 std::ostream &operator<<(std::ostream &stream, const PlatformParameters &pp)
145 {
146 stream << "ES" << pp.majorVersion << "_";
147 if (pp.minorVersion != 0)
148 {
149 stream << pp.minorVersion << "_";
150 }
151
152 switch (pp.driver)
153 {
154 case GLESDriverType::AngleEGL:
155 stream << GetRendererName(pp.eglParameters.renderer);
156 break;
157 case GLESDriverType::SystemWGL:
158 stream << "WGL";
159 break;
160 case GLESDriverType::SystemEGL:
161 stream << "EGL";
162 break;
163 default:
164 stream << "Error";
165 break;
166 }
167
168 if (pp.eglParameters.majorVersion != EGL_DONT_CARE)
169 {
170 stream << "_" << pp.eglParameters.majorVersion;
171 }
172
173 if (pp.eglParameters.minorVersion != EGL_DONT_CARE)
174 {
175 stream << "_" << pp.eglParameters.minorVersion;
176 }
177
178 switch (pp.eglParameters.deviceType)
179 {
180 case EGL_DONT_CARE:
181 case EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE:
182 // default
183 break;
184
185 case EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE:
186 stream << "_Null";
187 break;
188
189 case EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE:
190 stream << "_Reference";
191 break;
192
193 case EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE:
194 stream << "_Warp";
195 break;
196
197 case EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE:
198 stream << "_SwiftShader";
199 break;
200
201 default:
202 stream << "_Error";
203 break;
204 }
205
206 switch (pp.eglParameters.presentPath)
207 {
208 case EGL_EXPERIMENTAL_PRESENT_PATH_COPY_ANGLE:
209 stream << "_PresentPathCopy";
210 break;
211
212 case EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE:
213 stream << "_PresentPathFast";
214 break;
215
216 case EGL_DONT_CARE:
217 // default
218 break;
219
220 default:
221 stream << "_Error";
222 break;
223 }
224
225 if (pp.noFixture)
226 {
227 stream << "_NoFixture";
228 }
229
230 if (pp.eglParameters.displayPowerPreference == EGL_LOW_POWER_ANGLE)
231 {
232 stream << "_LowPowerGPU";
233 }
234
235 if (pp.eglParameters.displayPowerPreference == EGL_HIGH_POWER_ANGLE)
236 {
237 stream << "_HighPowerGPU";
238 }
239
240 for (Feature feature : pp.eglParameters.enabledFeatureOverrides)
241 {
242 stream << "_";
243 AppendCapitalizedFeature(stream, feature);
244 }
245 for (Feature feature : pp.eglParameters.disabledFeatureOverrides)
246 {
247 stream << "_No";
248 AppendCapitalizedFeature(stream, feature);
249 }
250
251 return stream;
252 }
253
254 // EGL platforms
255 namespace egl_platform
256 {
257
DEFAULT()258 EGLPlatformParameters DEFAULT()
259 {
260 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE);
261 }
262
DEFAULT_NULL()263 EGLPlatformParameters DEFAULT_NULL()
264 {
265 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE, EGL_DONT_CARE,
266 EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
267 }
268
D3D9()269 EGLPlatformParameters D3D9()
270 {
271 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
272 EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
273 }
274
D3D9_NULL()275 EGLPlatformParameters D3D9_NULL()
276 {
277 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
278 EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
279 }
280
D3D9_REFERENCE()281 EGLPlatformParameters D3D9_REFERENCE()
282 {
283 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
284 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE);
285 }
286
D3D11()287 EGLPlatformParameters D3D11()
288 {
289 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
290 EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
291 }
292
D3D11_PRESENT_PATH_FAST()293 EGLPlatformParameters D3D11_PRESENT_PATH_FAST()
294 {
295 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
296 EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE,
297 EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE);
298 }
299
D3D11_FL11_1()300 EGLPlatformParameters D3D11_FL11_1()
301 {
302 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 1,
303 EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
304 }
305
D3D11_FL11_0()306 EGLPlatformParameters D3D11_FL11_0()
307 {
308 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 0,
309 EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
310 }
311
D3D11_FL10_1()312 EGLPlatformParameters D3D11_FL10_1()
313 {
314 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 1,
315 EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
316 }
317
D3D11_FL10_0()318 EGLPlatformParameters D3D11_FL10_0()
319 {
320 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 0,
321 EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
322 }
323
D3D11_NULL()324 EGLPlatformParameters D3D11_NULL()
325 {
326 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
327 EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
328 }
329
D3D11_WARP()330 EGLPlatformParameters D3D11_WARP()
331 {
332 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
333 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE);
334 }
335
D3D11_FL11_1_WARP()336 EGLPlatformParameters D3D11_FL11_1_WARP()
337 {
338 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 1,
339 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE);
340 }
341
D3D11_FL11_0_WARP()342 EGLPlatformParameters D3D11_FL11_0_WARP()
343 {
344 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 0,
345 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE);
346 }
347
D3D11_FL10_1_WARP()348 EGLPlatformParameters D3D11_FL10_1_WARP()
349 {
350 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 1,
351 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE);
352 }
353
D3D11_FL10_0_WARP()354 EGLPlatformParameters D3D11_FL10_0_WARP()
355 {
356 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 0,
357 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE);
358 }
359
D3D11_REFERENCE()360 EGLPlatformParameters D3D11_REFERENCE()
361 {
362 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
363 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE);
364 }
365
D3D11_FL11_1_REFERENCE()366 EGLPlatformParameters D3D11_FL11_1_REFERENCE()
367 {
368 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 1,
369 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE);
370 }
371
D3D11_FL11_0_REFERENCE()372 EGLPlatformParameters D3D11_FL11_0_REFERENCE()
373 {
374 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 0,
375 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE);
376 }
377
D3D11_FL10_1_REFERENCE()378 EGLPlatformParameters D3D11_FL10_1_REFERENCE()
379 {
380 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 1,
381 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE);
382 }
383
D3D11_FL10_0_REFERENCE()384 EGLPlatformParameters D3D11_FL10_0_REFERENCE()
385 {
386 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 0,
387 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE);
388 }
389
OPENGL()390 EGLPlatformParameters OPENGL()
391 {
392 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE);
393 }
394
OPENGL(EGLint major,EGLint minor)395 EGLPlatformParameters OPENGL(EGLint major, EGLint minor)
396 {
397 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, major, minor, EGL_DONT_CARE);
398 }
399
OPENGL_NULL()400 EGLPlatformParameters OPENGL_NULL()
401 {
402 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
403 EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
404 }
405
OPENGLES()406 EGLPlatformParameters OPENGLES()
407 {
408 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE);
409 }
410
OPENGLES(EGLint major,EGLint minor)411 EGLPlatformParameters OPENGLES(EGLint major, EGLint minor)
412 {
413 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE, major, minor,
414 EGL_DONT_CARE);
415 }
416
OPENGLES_NULL()417 EGLPlatformParameters OPENGLES_NULL()
418 {
419 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE, EGL_DONT_CARE,
420 EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
421 }
422
OPENGL_OR_GLES()423 EGLPlatformParameters OPENGL_OR_GLES()
424 {
425 #if defined(ANGLE_PLATFORM_ANDROID)
426 return OPENGLES();
427 #else
428 return OPENGL();
429 #endif
430 }
431
OPENGL_OR_GLES(EGLint major,EGLint minor)432 EGLPlatformParameters OPENGL_OR_GLES(EGLint major, EGLint minor)
433 {
434 #if defined(ANGLE_PLATFORM_ANDROID)
435 return OPENGLES(major, minor);
436 #else
437 return OPENGL(major, minor);
438 #endif
439 }
440
OPENGL_OR_GLES_NULL()441 EGLPlatformParameters OPENGL_OR_GLES_NULL()
442 {
443 #if defined(ANGLE_PLATFORM_ANDROID)
444 return OPENGLES_NULL();
445 #else
446 return OPENGL_NULL();
447 #endif
448 }
449
VULKAN()450 EGLPlatformParameters VULKAN()
451 {
452 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE);
453 }
454
VULKAN_NULL()455 EGLPlatformParameters VULKAN_NULL()
456 {
457 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
458 EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
459 }
460
VULKAN_SWIFTSHADER()461 EGLPlatformParameters VULKAN_SWIFTSHADER()
462 {
463 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
464 EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE);
465 }
METAL()466 EGLPlatformParameters METAL()
467 {
468 return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE);
469 }
470
471 } // namespace egl_platform
472
473 // ANGLE tests platforms
ES1_D3D9()474 PlatformParameters ES1_D3D9()
475 {
476 return PlatformParameters(1, 0, egl_platform::D3D9());
477 }
478
ES2_D3D9()479 PlatformParameters ES2_D3D9()
480 {
481 return PlatformParameters(2, 0, egl_platform::D3D9());
482 }
483
ES1_D3D11()484 PlatformParameters ES1_D3D11()
485 {
486 return PlatformParameters(1, 0, egl_platform::D3D11());
487 }
488
ES2_D3D11()489 PlatformParameters ES2_D3D11()
490 {
491 return PlatformParameters(2, 0, egl_platform::D3D11());
492 }
493
ES2_D3D11_PRESENT_PATH_FAST()494 PlatformParameters ES2_D3D11_PRESENT_PATH_FAST()
495 {
496 return PlatformParameters(2, 0, egl_platform::D3D11_PRESENT_PATH_FAST());
497 }
498
ES2_D3D11_FL11_0()499 PlatformParameters ES2_D3D11_FL11_0()
500 {
501 return PlatformParameters(2, 0, egl_platform::D3D11_FL11_0());
502 }
503
ES2_D3D11_FL10_1()504 PlatformParameters ES2_D3D11_FL10_1()
505 {
506 return PlatformParameters(2, 0, egl_platform::D3D11_FL10_1());
507 }
508
ES2_D3D11_FL10_0()509 PlatformParameters ES2_D3D11_FL10_0()
510 {
511 return PlatformParameters(2, 0, egl_platform::D3D11_FL10_0());
512 }
513
ES2_D3D11_WARP()514 PlatformParameters ES2_D3D11_WARP()
515 {
516 return PlatformParameters(2, 0, egl_platform::D3D11_WARP());
517 }
518
ES2_D3D11_FL11_0_WARP()519 PlatformParameters ES2_D3D11_FL11_0_WARP()
520 {
521 return PlatformParameters(2, 0, egl_platform::D3D11_FL11_0_WARP());
522 }
523
ES2_D3D11_FL10_1_WARP()524 PlatformParameters ES2_D3D11_FL10_1_WARP()
525 {
526 return PlatformParameters(2, 0, egl_platform::D3D11_FL10_1_WARP());
527 }
528
ES2_D3D11_FL10_0_WARP()529 PlatformParameters ES2_D3D11_FL10_0_WARP()
530 {
531 return PlatformParameters(2, 0, egl_platform::D3D11_FL10_0_WARP());
532 }
533
ES2_D3D11_REFERENCE()534 PlatformParameters ES2_D3D11_REFERENCE()
535 {
536 return PlatformParameters(2, 0, egl_platform::D3D11_REFERENCE());
537 }
538
ES2_D3D11_FL11_0_REFERENCE()539 PlatformParameters ES2_D3D11_FL11_0_REFERENCE()
540 {
541 return PlatformParameters(2, 0, egl_platform::D3D11_FL11_0_REFERENCE());
542 }
543
ES2_D3D11_FL10_1_REFERENCE()544 PlatformParameters ES2_D3D11_FL10_1_REFERENCE()
545 {
546 return PlatformParameters(2, 0, egl_platform::D3D11_FL10_1_REFERENCE());
547 }
548
ES2_D3D11_FL10_0_REFERENCE()549 PlatformParameters ES2_D3D11_FL10_0_REFERENCE()
550 {
551 return PlatformParameters(2, 0, egl_platform::D3D11_FL10_0_REFERENCE());
552 }
553
ES3_D3D11()554 PlatformParameters ES3_D3D11()
555 {
556 return PlatformParameters(3, 0, egl_platform::D3D11());
557 }
558
ES3_D3D11_FL11_1()559 PlatformParameters ES3_D3D11_FL11_1()
560 {
561 return PlatformParameters(3, 0, egl_platform::D3D11_FL11_1());
562 }
563
ES3_D3D11_FL11_0()564 PlatformParameters ES3_D3D11_FL11_0()
565 {
566 return PlatformParameters(3, 0, egl_platform::D3D11_FL11_0());
567 }
568
ES3_D3D11_FL10_1()569 PlatformParameters ES3_D3D11_FL10_1()
570 {
571 return PlatformParameters(3, 0, egl_platform::D3D11_FL10_1());
572 }
573
ES31_D3D11()574 PlatformParameters ES31_D3D11()
575 {
576 return PlatformParameters(3, 1, egl_platform::D3D11());
577 }
578
ES31_D3D11_FL11_1()579 PlatformParameters ES31_D3D11_FL11_1()
580 {
581 return PlatformParameters(3, 1, egl_platform::D3D11_FL11_1());
582 }
583
ES31_D3D11_FL11_0()584 PlatformParameters ES31_D3D11_FL11_0()
585 {
586 return PlatformParameters(3, 1, egl_platform::D3D11_FL11_0());
587 }
588
ES3_D3D11_WARP()589 PlatformParameters ES3_D3D11_WARP()
590 {
591 return PlatformParameters(3, 0, egl_platform::D3D11_WARP());
592 }
593
ES3_D3D11_FL11_1_WARP()594 PlatformParameters ES3_D3D11_FL11_1_WARP()
595 {
596 return PlatformParameters(3, 0, egl_platform::D3D11_FL11_1_WARP());
597 }
598
ES3_D3D11_FL11_0_WARP()599 PlatformParameters ES3_D3D11_FL11_0_WARP()
600 {
601 return PlatformParameters(3, 0, egl_platform::D3D11_FL11_0_WARP());
602 }
603
ES3_D3D11_FL10_1_WARP()604 PlatformParameters ES3_D3D11_FL10_1_WARP()
605 {
606 return PlatformParameters(3, 0, egl_platform::D3D11_FL10_1_WARP());
607 }
608
ES1_OPENGLES()609 PlatformParameters ES1_OPENGLES()
610 {
611 return PlatformParameters(1, 0, egl_platform::OPENGLES());
612 }
613
ES2_OPENGLES()614 PlatformParameters ES2_OPENGLES()
615 {
616 return PlatformParameters(2, 0, egl_platform::OPENGLES());
617 }
618
ES2_OPENGLES(EGLint major,EGLint minor)619 PlatformParameters ES2_OPENGLES(EGLint major, EGLint minor)
620 {
621 return PlatformParameters(2, 0, egl_platform::OPENGLES(major, minor));
622 }
623
ES3_OPENGLES()624 PlatformParameters ES3_OPENGLES()
625 {
626 return PlatformParameters(3, 0, egl_platform::OPENGLES());
627 }
628
ES3_OPENGLES(EGLint major,EGLint minor)629 PlatformParameters ES3_OPENGLES(EGLint major, EGLint minor)
630 {
631 return PlatformParameters(3, 0, egl_platform::OPENGLES(major, minor));
632 }
633
ES31_OPENGLES()634 PlatformParameters ES31_OPENGLES()
635 {
636 return PlatformParameters(3, 1, egl_platform::OPENGLES());
637 }
638
ES31_OPENGLES(EGLint major,EGLint minor)639 PlatformParameters ES31_OPENGLES(EGLint major, EGLint minor)
640 {
641 return PlatformParameters(3, 1, egl_platform::OPENGLES(major, minor));
642 }
643
ES1_OPENGL()644 PlatformParameters ES1_OPENGL()
645 {
646 return PlatformParameters(1, 0, egl_platform::OPENGL());
647 }
648
ES2_OPENGL()649 PlatformParameters ES2_OPENGL()
650 {
651 return PlatformParameters(2, 0, egl_platform::OPENGL());
652 }
653
ES2_OPENGL(EGLint major,EGLint minor)654 PlatformParameters ES2_OPENGL(EGLint major, EGLint minor)
655 {
656 return PlatformParameters(2, 0, egl_platform::OPENGL(major, minor));
657 }
658
ES3_OPENGL()659 PlatformParameters ES3_OPENGL()
660 {
661 return PlatformParameters(3, 0, egl_platform::OPENGL());
662 }
663
ES3_OPENGL(EGLint major,EGLint minor)664 PlatformParameters ES3_OPENGL(EGLint major, EGLint minor)
665 {
666 return PlatformParameters(3, 0, egl_platform::OPENGL(major, minor));
667 }
668
ES31_OPENGL()669 PlatformParameters ES31_OPENGL()
670 {
671 return PlatformParameters(3, 1, egl_platform::OPENGL());
672 }
673
ES31_OPENGL(EGLint major,EGLint minor)674 PlatformParameters ES31_OPENGL(EGLint major, EGLint minor)
675 {
676 return PlatformParameters(3, 1, egl_platform::OPENGL(major, minor));
677 }
678
ES1_NULL()679 PlatformParameters ES1_NULL()
680 {
681 return PlatformParameters(1, 0, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
682 }
683
ES2_NULL()684 PlatformParameters ES2_NULL()
685 {
686 return PlatformParameters(2, 0, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
687 }
688
ES3_NULL()689 PlatformParameters ES3_NULL()
690 {
691 return PlatformParameters(3, 0, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
692 }
693
ES31_NULL()694 PlatformParameters ES31_NULL()
695 {
696 return PlatformParameters(3, 1, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
697 }
698
ES1_VULKAN()699 PlatformParameters ES1_VULKAN()
700 {
701 return PlatformParameters(1, 0, egl_platform::VULKAN());
702 }
703
ES1_VULKAN_NULL()704 PlatformParameters ES1_VULKAN_NULL()
705 {
706 return PlatformParameters(1, 0, egl_platform::VULKAN_NULL());
707 }
708
ES1_VULKAN_SWIFTSHADER()709 PlatformParameters ES1_VULKAN_SWIFTSHADER()
710 {
711 return PlatformParameters(1, 0, egl_platform::VULKAN_SWIFTSHADER());
712 }
713
ES2_VULKAN()714 PlatformParameters ES2_VULKAN()
715 {
716 return PlatformParameters(2, 0, egl_platform::VULKAN());
717 }
718
ES2_VULKAN_NULL()719 PlatformParameters ES2_VULKAN_NULL()
720 {
721 return PlatformParameters(2, 0, egl_platform::VULKAN_NULL());
722 }
723
ES2_VULKAN_SWIFTSHADER()724 PlatformParameters ES2_VULKAN_SWIFTSHADER()
725 {
726 return PlatformParameters(2, 0, egl_platform::VULKAN_SWIFTSHADER());
727 }
728
ES3_VULKAN()729 PlatformParameters ES3_VULKAN()
730 {
731 return PlatformParameters(3, 0, egl_platform::VULKAN());
732 }
733
ES3_VULKAN_NULL()734 PlatformParameters ES3_VULKAN_NULL()
735 {
736 return PlatformParameters(3, 0, egl_platform::VULKAN_NULL());
737 }
738
ES3_VULKAN_SWIFTSHADER()739 PlatformParameters ES3_VULKAN_SWIFTSHADER()
740 {
741 return PlatformParameters(3, 0, egl_platform::VULKAN_SWIFTSHADER());
742 }
743
ES31_VULKAN()744 PlatformParameters ES31_VULKAN()
745 {
746 return PlatformParameters(3, 1, egl_platform::VULKAN());
747 }
748
ES31_VULKAN_NULL()749 PlatformParameters ES31_VULKAN_NULL()
750 {
751 return PlatformParameters(3, 1, egl_platform::VULKAN_NULL());
752 }
753
ES31_VULKAN_SWIFTSHADER()754 PlatformParameters ES31_VULKAN_SWIFTSHADER()
755 {
756 return PlatformParameters(3, 1, egl_platform::VULKAN_SWIFTSHADER());
757 }
758
ES32_VULKAN()759 PlatformParameters ES32_VULKAN()
760 {
761 return PlatformParameters(3, 2, egl_platform::VULKAN());
762 }
763
ES32_VULKAN_NULL()764 PlatformParameters ES32_VULKAN_NULL()
765 {
766 return PlatformParameters(3, 2, egl_platform::VULKAN_NULL());
767 }
768
ES32_VULKAN_SWIFTSHADER()769 PlatformParameters ES32_VULKAN_SWIFTSHADER()
770 {
771 return PlatformParameters(3, 2, egl_platform::VULKAN_SWIFTSHADER());
772 }
773
ES1_METAL()774 PlatformParameters ES1_METAL()
775 {
776 return PlatformParameters(1, 0, egl_platform::METAL());
777 }
778
ES2_METAL()779 PlatformParameters ES2_METAL()
780 {
781 return PlatformParameters(2, 0, egl_platform::METAL());
782 }
783
ES3_METAL()784 PlatformParameters ES3_METAL()
785 {
786 return PlatformParameters(3, 0, egl_platform::METAL());
787 }
788
ES2_WGL()789 PlatformParameters ES2_WGL()
790 {
791 return PlatformParameters(2, 0, GLESDriverType::SystemWGL);
792 }
793
ES3_WGL()794 PlatformParameters ES3_WGL()
795 {
796 return PlatformParameters(3, 0, GLESDriverType::SystemWGL);
797 }
798
ES2_EGL()799 PlatformParameters ES2_EGL()
800 {
801 return PlatformParameters(2, 0, GLESDriverType::SystemEGL);
802 }
803
ES3_EGL()804 PlatformParameters ES3_EGL()
805 {
806 return PlatformParameters(3, 0, GLESDriverType::SystemEGL);
807 }
808 } // namespace angle
809