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