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