• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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