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