• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_features.py using data from gl_features.json.
3 //
4 // Copyright 2022 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // FeaturesGL_autogen.h: angle::Features and workarounds for GL driver bugs and other issues.
9 
10 #ifndef ANGLE_PLATFORM_AUTOGEN_FEATURESGL_H_
11 #define ANGLE_PLATFORM_AUTOGEN_FEATURESGL_H_
12 
13 #include "platform/Feature.h"
14 
15 namespace angle
16 {
17 
18 struct FeaturesGL : FeatureSetBase
19 {
20     FeaturesGL();
21     ~FeaturesGL();
22 
23     FeatureInfo avoid1BitAlphaTextureFormats = {
24         "avoid1BitAlphaTextureFormats",
25         FeatureCategory::OpenGLWorkarounds,
26         &members,
27     };
28 
29     FeatureInfo RGBA4IsNotSupportedForColorRendering = {
30         "RGBA4IsNotSupportedForColorRendering",
31         FeatureCategory::OpenGLWorkarounds,
32         &members,
33     };
34 
35     FeatureInfo allowETCFormats = {
36         "allowETCFormats",
37         FeatureCategory::OpenGLWorkarounds,
38         &members,
39     };
40 
41     FeatureInfo allowAstcFormats = {
42         "allowAstcFormats",
43         FeatureCategory::OpenGLWorkarounds,
44         &members,
45     };
46 
47     FeatureInfo clearsWithGapsNeedFlush = {
48         "clearsWithGapsNeedFlush",
49         FeatureCategory::OpenGLWorkarounds,
50         &members,
51     };
52 
53     FeatureInfo doesSRGBClearsOnLinearFramebufferAttachments = {
54         "doesSRGBClearsOnLinearFramebufferAttachments",
55         FeatureCategory::OpenGLWorkarounds,
56         &members,
57     };
58 
59     FeatureInfo doWhileGLSLCausesGPUHang = {
60         "doWhileGLSLCausesGPUHang",
61         FeatureCategory::OpenGLWorkarounds,
62         &members,
63     };
64 
65     FeatureInfo vertexIDDoesNotIncludeBaseVertex = {
66         "vertexIDDoesNotIncludeBaseVertex",
67         FeatureCategory::OpenGLWorkarounds,
68         &members,
69     };
70 
71     FeatureInfo finishDoesNotCauseQueriesToBeAvailable = {
72         "finishDoesNotCauseQueriesToBeAvailable",
73         FeatureCategory::OpenGLWorkarounds,
74         &members,
75     };
76 
77     FeatureInfo alwaysCallUseProgramAfterLink = {
78         "alwaysCallUseProgramAfterLink",
79         FeatureCategory::OpenGLWorkarounds,
80         &members,
81     };
82 
83     FeatureInfo unpackOverlappingRowsSeparatelyUnpackBuffer = {
84         "unpackOverlappingRowsSeparatelyUnpackBuffer",
85         FeatureCategory::OpenGLWorkarounds,
86         &members,
87     };
88 
89     FeatureInfo packOverlappingRowsSeparatelyPackBuffer = {
90         "packOverlappingRowsSeparatelyPackBuffer",
91         FeatureCategory::OpenGLWorkarounds,
92         &members,
93     };
94 
95     FeatureInfo initializeCurrentVertexAttributes = {
96         "initializeCurrentVertexAttributes",
97         FeatureCategory::OpenGLWorkarounds,
98         &members,
99     };
100 
101     FeatureInfo emulateAbsIntFunction = {
102         "emulateAbsIntFunction",
103         FeatureCategory::OpenGLWorkarounds,
104         &members,
105     };
106 
107     FeatureInfo addAndTrueToLoopCondition = {
108         "addAndTrueToLoopCondition",
109         FeatureCategory::OpenGLWorkarounds,
110         &members,
111     };
112 
113     FeatureInfo unpackLastRowSeparatelyForPaddingInclusion = {
114         "unpackLastRowSeparatelyForPaddingInclusion",
115         FeatureCategory::OpenGLWorkarounds,
116         &members,
117     };
118 
119     FeatureInfo packLastRowSeparatelyForPaddingInclusion = {
120         "packLastRowSeparatelyForPaddingInclusion",
121         FeatureCategory::OpenGLWorkarounds,
122         &members,
123     };
124 
125     FeatureInfo emulateIsnanFloat = {
126         "emulateIsnanFloat",
127         FeatureCategory::OpenGLWorkarounds,
128         &members,
129     };
130 
131     FeatureInfo useUnusedBlocksWithStandardOrSharedLayout = {
132         "useUnusedBlocksWithStandardOrSharedLayout",
133         FeatureCategory::OpenGLWorkarounds,
134         &members,
135     };
136 
137     FeatureInfo removeInvariantAndCentroidForESSL3 = {
138         "removeInvariantAndCentroidForESSL3",
139         FeatureCategory::OpenGLWorkarounds,
140         &members,
141     };
142 
143     FeatureInfo rewriteFloatUnaryMinusOperator = {
144         "rewriteFloatUnaryMinusOperator",
145         FeatureCategory::OpenGLWorkarounds,
146         &members,
147     };
148 
149     FeatureInfo emulateAtan2Float = {
150         "emulateAtan2Float",
151         FeatureCategory::OpenGLWorkarounds,
152         &members,
153     };
154 
155     FeatureInfo reapplyUBOBindingsAfterUsingBinaryProgram = {
156         "reapplyUBOBindingsAfterUsingBinaryProgram",
157         FeatureCategory::OpenGLWorkarounds,
158         &members,
159     };
160 
161     FeatureInfo emulateMaxVertexAttribStride = {
162         "emulateMaxVertexAttribStride",
163         FeatureCategory::OpenGLWorkarounds,
164         &members,
165     };
166 
167     FeatureInfo dontInitializeUninitializedLocals = {
168         "dontInitializeUninitializedLocals",
169         FeatureCategory::OpenGLWorkarounds,
170         &members,
171     };
172 
173     FeatureInfo clampPointSize = {
174         "clampPointSize",
175         FeatureCategory::OpenGLWorkarounds,
176         &members,
177     };
178 
179     FeatureInfo forceMaxCombinedShaderOutputResources = {
180         "forceMaxCombinedShaderOutputResources",
181         FeatureCategory::OpenGLFeatures,
182         &members,
183     };
184 
185     FeatureInfo dontUseLoopsToInitializeVariables = {
186         "dontUseLoopsToInitializeVariables",
187         FeatureCategory::OpenGLWorkarounds,
188         &members,
189     };
190 
191     FeatureInfo clampFragDepth = {
192         "clampFragDepth",
193         FeatureCategory::OpenGLWorkarounds,
194         &members,
195     };
196 
197     FeatureInfo rewriteRepeatedAssignToSwizzled = {
198         "rewriteRepeatedAssignToSwizzled",
199         FeatureCategory::OpenGLWorkarounds,
200         &members,
201     };
202 
203     FeatureInfo preTransformTextureCubeGradDerivatives = {
204         "preTransformTextureCubeGradDerivatives",
205         FeatureCategory::OpenGLWorkarounds,
206         &members,
207     };
208 
209     FeatureInfo disableBlendFuncExtended = {
210         "disableBlendFuncExtended",
211         FeatureCategory::OpenGLWorkarounds,
212         &members,
213     };
214 
215     FeatureInfo unsizedSRGBReadPixelsDoesntTransform = {
216         "unsizedSRGBReadPixelsDoesntTransform",
217         FeatureCategory::OpenGLWorkarounds,
218         &members,
219     };
220 
221     FeatureInfo queryCounterBitsGeneratesErrors = {
222         "queryCounterBitsGeneratesErrors",
223         FeatureCategory::OpenGLWorkarounds,
224         &members,
225     };
226 
227     FeatureInfo limitWebglMaxTextureSizeTo4096 = {
228         "limitWebglMaxTextureSizeTo4096",
229         FeatureCategory::OpenGLWorkarounds,
230         &members,
231     };
232 
233     FeatureInfo limitWebglMaxTextureSizeTo8192 = {
234         "limitWebglMaxTextureSizeTo8192",
235         FeatureCategory::OpenGLWorkarounds,
236         &members,
237     };
238 
239     FeatureInfo limitMaxMSAASamplesTo4 = {
240         "limitMaxMSAASamplesTo4",
241         FeatureCategory::OpenGLWorkarounds,
242         &members,
243     };
244 
245     FeatureInfo allowClearForRobustResourceInit = {
246         "allowClearForRobustResourceInit",
247         FeatureCategory::OpenGLWorkarounds,
248         &members,
249     };
250 
251     FeatureInfo clampArrayAccess = {
252         "clampArrayAccess",
253         FeatureCategory::OpenGLWorkarounds,
254         &members,
255     };
256 
257     FeatureInfo resetTexImage2DBaseLevel = {
258         "resetTexImage2DBaseLevel",
259         FeatureCategory::OpenGLWorkarounds,
260         &members,
261     };
262 
263     FeatureInfo clearToZeroOrOneBroken = {
264         "clearToZeroOrOneBroken",
265         FeatureCategory::OpenGLWorkarounds,
266         &members,
267     };
268 
269     FeatureInfo limitMax3dArrayTextureSizeTo1024 = {
270         "limitMax3dArrayTextureSizeTo1024",
271         FeatureCategory::OpenGLWorkarounds,
272         &members,
273     };
274 
275     FeatureInfo adjustSrcDstRegionForBlitFramebuffer = {
276         "adjustSrcDstRegionForBlitFramebuffer",
277         FeatureCategory::OpenGLWorkarounds,
278         &members,
279     };
280 
281     FeatureInfo clipSrcRegionForBlitFramebuffer = {
282         "clipSrcRegionForBlitFramebuffer",
283         FeatureCategory::OpenGLWorkarounds,
284         &members,
285     };
286 
287     FeatureInfo RGBDXT1TexturesSampleZeroAlpha = {
288         "RGBDXT1TexturesSampleZeroAlpha",
289         FeatureCategory::OpenGLWorkarounds,
290         &members,
291     };
292 
293     FeatureInfo unfoldShortCircuits = {
294         "unfoldShortCircuits",
295         FeatureCategory::OpenGLWorkarounds,
296         &members,
297     };
298 
299     FeatureInfo emulatePrimitiveRestartFixedIndex = {
300         "emulatePrimitiveRestartFixedIndex",
301         FeatureCategory::OpenGLWorkarounds,
302         &members,
303     };
304 
305     FeatureInfo setPrimitiveRestartFixedIndexForDrawArrays = {
306         "setPrimitiveRestartFixedIndexForDrawArrays",
307         FeatureCategory::OpenGLWorkarounds,
308         &members,
309     };
310 
311     FeatureInfo removeDynamicIndexingOfSwizzledVector = {
312         "removeDynamicIndexingOfSwizzledVector",
313         FeatureCategory::OpenGLWorkarounds,
314         &members,
315     };
316 
317     FeatureInfo preAddTexelFetchOffsets = {
318         "preAddTexelFetchOffsets",
319         FeatureCategory::OpenGLWorkarounds,
320         &members,
321     };
322 
323     FeatureInfo regenerateStructNames = {
324         "regenerateStructNames",
325         FeatureCategory::OpenGLWorkarounds,
326         &members,
327     };
328 
329     FeatureInfo readPixelsUsingImplementationColorReadFormatForNorm16 = {
330         "readPixelsUsingImplementationColorReadFormatForNorm16",
331         FeatureCategory::OpenGLWorkarounds,
332         &members,
333     };
334 
335     FeatureInfo flushBeforeDeleteTextureIfCopiedTo = {
336         "flushBeforeDeleteTextureIfCopiedTo",
337         FeatureCategory::OpenGLWorkarounds,
338         &members,
339     };
340 
341     FeatureInfo rewriteRowMajorMatrices = {
342         "rewriteRowMajorMatrices",
343         FeatureCategory::OpenGLWorkarounds,
344         &members,
345     };
346 
347     FeatureInfo disableDrawBuffersIndexed = {
348         "disableDrawBuffersIndexed",
349         FeatureCategory::OpenGLWorkarounds,
350         &members,
351     };
352 
353     FeatureInfo disableSemaphoreFd = {
354         "disableSemaphoreFd",
355         FeatureCategory::OpenGLWorkarounds,
356         &members,
357     };
358 
359     FeatureInfo disableTimestampQueries = {
360         "disableTimestampQueries",
361         FeatureCategory::OpenGLWorkarounds,
362         &members,
363     };
364 
365     FeatureInfo decodeEncodeSRGBForGenerateMipmap = {
366         "decodeEncodeSRGBForGenerateMipmap",
367         FeatureCategory::OpenGLWorkarounds,
368         &members,
369     };
370 
371     FeatureInfo emulateCopyTexImage2D = {
372         "emulateCopyTexImage2D",
373         FeatureCategory::OpenGLWorkarounds,
374         &members,
375     };
376 
377     FeatureInfo emulateCopyTexImage2DFromRenderbuffers = {
378         "emulateCopyTexImage2DFromRenderbuffers",
379         FeatureCategory::OpenGLWorkarounds,
380         &members,
381     };
382 
383     FeatureInfo disableGPUSwitchingSupport = {
384         "disableGPUSwitchingSupport",
385         FeatureCategory::OpenGLWorkarounds,
386         &members,
387     };
388 
389     FeatureInfo disableNativeParallelCompile = {
390         "disableNativeParallelCompile",
391         FeatureCategory::OpenGLWorkarounds,
392         &members,
393     };
394 
395     FeatureInfo emulatePackSkipRowsAndPackSkipPixels = {
396         "emulatePackSkipRowsAndPackSkipPixels",
397         FeatureCategory::OpenGLWorkarounds,
398         &members,
399     };
400 
401     FeatureInfo clampMscRate = {
402         "clampMscRate",
403         FeatureCategory::OpenGLWorkarounds,
404         &members,
405     };
406 
407     FeatureInfo bindTransformFeedbackBufferBeforeBindBufferRange = {
408         "bindTransformFeedbackBufferBeforeBindBufferRange",
409         FeatureCategory::OpenGLWorkarounds,
410         &members,
411     };
412 
413     FeatureInfo disableSyncControlSupport = {
414         "disableSyncControlSupport",
415         FeatureCategory::OpenGLWorkarounds,
416         &members,
417     };
418 
419     FeatureInfo keepBufferShadowCopy = {
420         "keepBufferShadowCopy",
421         FeatureCategory::OpenGLWorkarounds,
422         &members,
423     };
424 
425     FeatureInfo setZeroLevelBeforeGenerateMipmap = {
426         "setZeroLevelBeforeGenerateMipmap",
427         FeatureCategory::OpenGLWorkarounds,
428         &members,
429     };
430 
431     FeatureInfo promotePackedFormatsTo8BitPerChannel = {
432         "promotePackedFormatsTo8BitPerChannel",
433         FeatureCategory::OpenGLWorkarounds,
434         &members,
435     };
436 
437     FeatureInfo initFragmentOutputVariables = {
438         "initFragmentOutputVariables",
439         FeatureCategory::OpenGLWorkarounds,
440         &members,
441     };
442 
443     FeatureInfo shiftInstancedArrayDataWithOffset = {
444         "shiftInstancedArrayDataWithOffset",
445         FeatureCategory::OpenGLWorkarounds,
446         &members,
447     };
448 
449     FeatureInfo syncAllVertexArraysToDefault = {
450         "syncAllVertexArraysToDefault",
451         FeatureCategory::OpenGLWorkarounds,
452         &members,
453     };
454 
455     FeatureInfo syncDefaultVertexArraysToDefault = {
456         "syncDefaultVertexArraysToDefault",
457         FeatureCategory::OpenGLWorkarounds,
458         &members,
459     };
460 
461     FeatureInfo sanitizeAMDGPURendererString = {
462         "sanitizeAMDGPURendererString",
463         FeatureCategory::OpenGLWorkarounds,
464         &members,
465     };
466 
467     FeatureInfo unbindFBOBeforeSwitchingContext = {
468         "unbindFBOBeforeSwitchingContext",
469         FeatureCategory::OpenGLWorkarounds,
470         &members,
471     };
472 
473     FeatureInfo flushOnFramebufferChange = {
474         "flushOnFramebufferChange",
475         FeatureCategory::OpenGLWorkarounds,
476         &members,
477     };
478 
479     FeatureInfo disableMultisampledRenderToTexture = {
480         "disableMultisampledRenderToTexture",
481         FeatureCategory::OpenGLWorkarounds,
482         &members,
483     };
484 
485     FeatureInfo uploadTextureDataInChunks = {
486         "uploadTextureDataInChunks",
487         FeatureCategory::OpenGLWorkarounds,
488         &members,
489     };
490 
491     FeatureInfo emulateImmutableCompressedTexture3D = {
492         "emulateImmutableCompressedTexture3D",
493         FeatureCategory::OpenGLWorkarounds,
494         &members,
495     };
496 
497     FeatureInfo emulateRGB10 = {
498         "emulateRGB10",
499         FeatureCategory::OpenGLWorkarounds,
500         &members,
501     };
502 
503     FeatureInfo alwaysUnbindFramebufferTexture2D = {
504         "alwaysUnbindFramebufferTexture2D",
505         FeatureCategory::OpenGLWorkarounds,
506         &members,
507     };
508 
509     FeatureInfo disableTextureClampToBorder = {
510         "disableTextureClampToBorder",
511         FeatureCategory::OpenGLWorkarounds,
512         &members,
513     };
514 
515     FeatureInfo passHighpToPackUnormSnormBuiltins = {
516         "passHighpToPackUnormSnormBuiltins",
517         FeatureCategory::OpenGLWorkarounds,
518         &members,
519     };
520 
521     FeatureInfo emulateClipDistanceState = {
522         "emulateClipDistanceState",
523         FeatureCategory::OpenGLWorkarounds,
524         &members,
525     };
526 
527     FeatureInfo emulateClipOrigin = {
528         "emulateClipOrigin",
529         FeatureCategory::OpenGLWorkarounds,
530         &members,
531     };
532 
533     FeatureInfo bindCompleteFramebufferForTimerQueries = {
534         "bindCompleteFramebufferForTimerQueries",
535         FeatureCategory::OpenGLWorkarounds,
536         &members,
537     };
538 
539     FeatureInfo disableBaseInstanceVertex = {
540         "disableBaseInstanceVertex",
541         FeatureCategory::OpenGLWorkarounds,
542         &members,
543     };
544 
545     FeatureInfo supportsFragmentShaderInterlockNV = {
546         "supportsFragmentShaderInterlockNV",
547         FeatureCategory::OpenGLFeatures,
548         &members,
549     };
550 
551     FeatureInfo supportsFragmentShaderOrderingINTEL = {
552         "supportsFragmentShaderOrderingINTEL",
553         FeatureCategory::OpenGLFeatures,
554         &members,
555     };
556 
557     FeatureInfo supportsFragmentShaderInterlockARB = {
558         "supportsFragmentShaderInterlockARB",
559         FeatureCategory::OpenGLFeatures,
560         &members,
561     };
562 
563     FeatureInfo supportsShaderFramebufferFetchEXT = {
564         "supportsShaderFramebufferFetchEXT",
565         FeatureCategory::OpenGLFeatures,
566         &members,
567     };
568 
569     FeatureInfo supportsShaderFramebufferFetchNonCoherentEXT = {
570         "supportsShaderFramebufferFetchNonCoherentEXT",
571         FeatureCategory::OpenGLFeatures,
572         &members,
573     };
574 
575     FeatureInfo disableClipControl = {
576         "disableClipControl",
577         FeatureCategory::OpenGLFeatures,
578         &members,
579     };
580 
581     FeatureInfo scalarizeVecAndMatConstructorArgs = {
582         "scalarizeVecAndMatConstructorArgs",
583         FeatureCategory::OpenGLWorkarounds,
584         &members,
585     };
586 
587     FeatureInfo ensureNonEmptyBufferIsBoundForDraw = {
588         "ensureNonEmptyBufferIsBoundForDraw",
589         FeatureCategory::OpenGLFeatures,
590         &members,
591     };
592 
593     FeatureInfo explicitFragmentLocations = {
594         "explicitFragmentLocations",
595         FeatureCategory::OpenGLWorkarounds,
596         &members,
597     };
598 
599     FeatureInfo disableRenderSnorm = {
600         "disableRenderSnorm",
601         FeatureCategory::OpenGLWorkarounds,
602         &members,
603     };
604 
605     FeatureInfo disableTextureMirrorClampToEdge = {
606         "disableTextureMirrorClampToEdge",
607         FeatureCategory::OpenGLWorkarounds,
608         &members,
609     };
610 
611     FeatureInfo resyncDepthRangeOnClipControl = {
612         "resyncDepthRangeOnClipControl",
613         FeatureCategory::OpenGLWorkarounds,
614         &members,
615     };
616 
617     FeatureInfo corruptProgramBinaryForTesting = {
618         "corruptProgramBinaryForTesting",
619         FeatureCategory::OpenGLWorkarounds,
620         &members,
621     };
622 
623     FeatureInfo useIntermediateTextureForGenerateMipmap = {
624         "useIntermediateTextureForGenerateMipmap",
625         FeatureCategory::OpenGLWorkarounds,
626         &members,
627     };
628 
629     FeatureInfo avoidBindFragDataLocation = {
630         "avoidBindFragDataLocation",
631         FeatureCategory::OpenGLWorkarounds,
632         &members,
633     };
634 
635     FeatureInfo srgbBlendingBroken = {
636         "srgbBlendingBroken",
637         FeatureCategory::OpenGLWorkarounds,
638         &members,
639     };
640 
641     FeatureInfo bgraTexImageFormatsBroken = {
642         "bgraTexImageFormatsBroken",
643         FeatureCategory::OpenGLWorkarounds,
644         &members,
645     };
646 
647     FeatureInfo disableTiledRendering = {
648         "disableTiledRendering",
649         FeatureCategory::OpenGLWorkarounds,
650         &members,
651     };
652 
653     FeatureInfo disableBlendEquationAdvanced = {
654         "disableBlendEquationAdvanced",
655         FeatureCategory::OpenGLWorkarounds,
656         &members,
657     };
658 
659 };
660 
661 inline FeaturesGL::FeaturesGL()  = default;
662 inline FeaturesGL::~FeaturesGL() = default;
663 
664 }  // namespace angle
665 
666 #endif  // ANGLE_PLATFORM_AUTOGEN_FEATURESGL_H_
667