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