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 dontUseLoopsToInitializeVariables = { 180 "dontUseLoopsToInitializeVariables", 181 FeatureCategory::OpenGLWorkarounds, 182 &members, 183 }; 184 185 FeatureInfo clampFragDepth = { 186 "clampFragDepth", 187 FeatureCategory::OpenGLWorkarounds, 188 &members, 189 }; 190 191 FeatureInfo rewriteRepeatedAssignToSwizzled = { 192 "rewriteRepeatedAssignToSwizzled", 193 FeatureCategory::OpenGLWorkarounds, 194 &members, 195 }; 196 197 FeatureInfo preTransformTextureCubeGradDerivatives = { 198 "preTransformTextureCubeGradDerivatives", 199 FeatureCategory::OpenGLWorkarounds, 200 &members, 201 }; 202 203 FeatureInfo disableBlendFuncExtended = { 204 "disableBlendFuncExtended", 205 FeatureCategory::OpenGLWorkarounds, 206 &members, 207 }; 208 209 FeatureInfo unsizedSRGBReadPixelsDoesntTransform = { 210 "unsizedSRGBReadPixelsDoesntTransform", 211 FeatureCategory::OpenGLWorkarounds, 212 &members, 213 }; 214 215 FeatureInfo queryCounterBitsGeneratesErrors = { 216 "queryCounterBitsGeneratesErrors", 217 FeatureCategory::OpenGLWorkarounds, 218 &members, 219 }; 220 221 FeatureInfo limitWebglMaxTextureSizeTo4096 = { 222 "limitWebglMaxTextureSizeTo4096", 223 FeatureCategory::OpenGLWorkarounds, 224 &members, 225 }; 226 227 FeatureInfo limitWebglMaxTextureSizeTo8192 = { 228 "limitWebglMaxTextureSizeTo8192", 229 FeatureCategory::OpenGLWorkarounds, 230 &members, 231 }; 232 233 FeatureInfo limitMaxMSAASamplesTo4 = { 234 "limitMaxMSAASamplesTo4", 235 FeatureCategory::OpenGLWorkarounds, 236 &members, 237 }; 238 239 FeatureInfo allowClearForRobustResourceInit = { 240 "allowClearForRobustResourceInit", 241 FeatureCategory::OpenGLWorkarounds, 242 &members, 243 }; 244 245 FeatureInfo clampArrayAccess = { 246 "clampArrayAccess", 247 FeatureCategory::OpenGLWorkarounds, 248 &members, 249 }; 250 251 FeatureInfo resetTexImage2DBaseLevel = { 252 "resetTexImage2DBaseLevel", 253 FeatureCategory::OpenGLWorkarounds, 254 &members, 255 }; 256 257 FeatureInfo clearToZeroOrOneBroken = { 258 "clearToZeroOrOneBroken", 259 FeatureCategory::OpenGLWorkarounds, 260 &members, 261 }; 262 263 FeatureInfo limitMax3dArrayTextureSizeTo1024 = { 264 "limitMax3dArrayTextureSizeTo1024", 265 FeatureCategory::OpenGLWorkarounds, 266 &members, 267 }; 268 269 FeatureInfo adjustSrcDstRegionForBlitFramebuffer = { 270 "adjustSrcDstRegionForBlitFramebuffer", 271 FeatureCategory::OpenGLWorkarounds, 272 &members, 273 }; 274 275 FeatureInfo clipSrcRegionForBlitFramebuffer = { 276 "clipSrcRegionForBlitFramebuffer", 277 FeatureCategory::OpenGLWorkarounds, 278 &members, 279 }; 280 281 FeatureInfo RGBDXT1TexturesSampleZeroAlpha = { 282 "RGBDXT1TexturesSampleZeroAlpha", 283 FeatureCategory::OpenGLWorkarounds, 284 &members, 285 }; 286 287 FeatureInfo unfoldShortCircuits = { 288 "unfoldShortCircuits", 289 FeatureCategory::OpenGLWorkarounds, 290 &members, 291 }; 292 293 FeatureInfo emulatePrimitiveRestartFixedIndex = { 294 "emulatePrimitiveRestartFixedIndex", 295 FeatureCategory::OpenGLWorkarounds, 296 &members, 297 }; 298 299 FeatureInfo setPrimitiveRestartFixedIndexForDrawArrays = { 300 "setPrimitiveRestartFixedIndexForDrawArrays", 301 FeatureCategory::OpenGLWorkarounds, 302 &members, 303 }; 304 305 FeatureInfo removeDynamicIndexingOfSwizzledVector = { 306 "removeDynamicIndexingOfSwizzledVector", 307 FeatureCategory::OpenGLWorkarounds, 308 &members, 309 }; 310 311 FeatureInfo preAddTexelFetchOffsets = { 312 "preAddTexelFetchOffsets", 313 FeatureCategory::OpenGLWorkarounds, 314 &members, 315 }; 316 317 FeatureInfo regenerateStructNames = { 318 "regenerateStructNames", 319 FeatureCategory::OpenGLWorkarounds, 320 &members, 321 }; 322 323 FeatureInfo readPixelsUsingImplementationColorReadFormatForNorm16 = { 324 "readPixelsUsingImplementationColorReadFormatForNorm16", 325 FeatureCategory::OpenGLWorkarounds, 326 &members, 327 }; 328 329 FeatureInfo flushBeforeDeleteTextureIfCopiedTo = { 330 "flushBeforeDeleteTextureIfCopiedTo", 331 FeatureCategory::OpenGLWorkarounds, 332 &members, 333 }; 334 335 FeatureInfo rewriteRowMajorMatrices = { 336 "rewriteRowMajorMatrices", 337 FeatureCategory::OpenGLWorkarounds, 338 &members, 339 }; 340 341 FeatureInfo disableDrawBuffersIndexed = { 342 "disableDrawBuffersIndexed", 343 FeatureCategory::OpenGLWorkarounds, 344 &members, 345 }; 346 347 FeatureInfo disableSemaphoreFd = { 348 "disableSemaphoreFd", 349 FeatureCategory::OpenGLWorkarounds, 350 &members, 351 }; 352 353 FeatureInfo disableTimestampQueries = { 354 "disableTimestampQueries", 355 FeatureCategory::OpenGLWorkarounds, 356 &members, 357 }; 358 359 FeatureInfo decodeEncodeSRGBForGenerateMipmap = { 360 "decodeEncodeSRGBForGenerateMipmap", 361 FeatureCategory::OpenGLWorkarounds, 362 &members, 363 }; 364 365 FeatureInfo emulateCopyTexImage2D = { 366 "emulateCopyTexImage2D", 367 FeatureCategory::OpenGLWorkarounds, 368 &members, 369 }; 370 371 FeatureInfo emulateCopyTexImage2DFromRenderbuffers = { 372 "emulateCopyTexImage2DFromRenderbuffers", 373 FeatureCategory::OpenGLWorkarounds, 374 &members, 375 }; 376 377 FeatureInfo disableGPUSwitchingSupport = { 378 "disableGPUSwitchingSupport", 379 FeatureCategory::OpenGLWorkarounds, 380 &members, 381 }; 382 383 FeatureInfo disableNativeParallelCompile = { 384 "disableNativeParallelCompile", 385 FeatureCategory::OpenGLWorkarounds, 386 &members, 387 }; 388 389 FeatureInfo emulatePackSkipRowsAndPackSkipPixels = { 390 "emulatePackSkipRowsAndPackSkipPixels", 391 FeatureCategory::OpenGLWorkarounds, 392 &members, 393 }; 394 395 FeatureInfo clampMscRate = { 396 "clampMscRate", 397 FeatureCategory::OpenGLWorkarounds, 398 &members, 399 }; 400 401 FeatureInfo bindTransformFeedbackBufferBeforeBindBufferRange = { 402 "bindTransformFeedbackBufferBeforeBindBufferRange", 403 FeatureCategory::OpenGLWorkarounds, 404 &members, 405 }; 406 407 FeatureInfo disableSyncControlSupport = { 408 "disableSyncControlSupport", 409 FeatureCategory::OpenGLWorkarounds, 410 &members, 411 }; 412 413 FeatureInfo keepBufferShadowCopy = { 414 "keepBufferShadowCopy", 415 FeatureCategory::OpenGLWorkarounds, 416 &members, 417 }; 418 419 FeatureInfo setZeroLevelBeforeGenerateMipmap = { 420 "setZeroLevelBeforeGenerateMipmap", 421 FeatureCategory::OpenGLWorkarounds, 422 &members, 423 }; 424 425 FeatureInfo promotePackedFormatsTo8BitPerChannel = { 426 "promotePackedFormatsTo8BitPerChannel", 427 FeatureCategory::OpenGLWorkarounds, 428 &members, 429 }; 430 431 FeatureInfo initFragmentOutputVariables = { 432 "initFragmentOutputVariables", 433 FeatureCategory::OpenGLWorkarounds, 434 &members, 435 }; 436 437 FeatureInfo shiftInstancedArrayDataWithOffset = { 438 "shiftInstancedArrayDataWithOffset", 439 FeatureCategory::OpenGLWorkarounds, 440 &members, 441 }; 442 443 FeatureInfo syncAllVertexArraysToDefault = { 444 "syncAllVertexArraysToDefault", 445 FeatureCategory::OpenGLWorkarounds, 446 &members, 447 }; 448 449 FeatureInfo syncDefaultVertexArraysToDefault = { 450 "syncDefaultVertexArraysToDefault", 451 FeatureCategory::OpenGLWorkarounds, 452 &members, 453 }; 454 455 FeatureInfo sanitizeAMDGPURendererString = { 456 "sanitizeAMDGPURendererString", 457 FeatureCategory::OpenGLWorkarounds, 458 &members, 459 }; 460 461 FeatureInfo unbindFBOBeforeSwitchingContext = { 462 "unbindFBOBeforeSwitchingContext", 463 FeatureCategory::OpenGLWorkarounds, 464 &members, 465 }; 466 467 FeatureInfo flushOnFramebufferChange = { 468 "flushOnFramebufferChange", 469 FeatureCategory::OpenGLWorkarounds, 470 &members, 471 }; 472 473 FeatureInfo disableMultisampledRenderToTexture = { 474 "disableMultisampledRenderToTexture", 475 FeatureCategory::OpenGLWorkarounds, 476 &members, 477 }; 478 479 FeatureInfo uploadTextureDataInChunks = { 480 "uploadTextureDataInChunks", 481 FeatureCategory::OpenGLWorkarounds, 482 &members, 483 }; 484 485 FeatureInfo emulateImmutableCompressedTexture3D = { 486 "emulateImmutableCompressedTexture3D", 487 FeatureCategory::OpenGLWorkarounds, 488 &members, 489 }; 490 491 FeatureInfo emulateRGB10 = { 492 "emulateRGB10", 493 FeatureCategory::OpenGLWorkarounds, 494 &members, 495 }; 496 497 FeatureInfo alwaysUnbindFramebufferTexture2D = { 498 "alwaysUnbindFramebufferTexture2D", 499 FeatureCategory::OpenGLWorkarounds, 500 &members, 501 }; 502 503 FeatureInfo disableTextureClampToBorder = { 504 "disableTextureClampToBorder", 505 FeatureCategory::OpenGLWorkarounds, 506 &members, 507 }; 508 509 FeatureInfo passHighpToPackUnormSnormBuiltins = { 510 "passHighpToPackUnormSnormBuiltins", 511 FeatureCategory::OpenGLWorkarounds, 512 &members, 513 }; 514 515 FeatureInfo emulateClipDistanceState = { 516 "emulateClipDistanceState", 517 FeatureCategory::OpenGLWorkarounds, 518 &members, 519 }; 520 521 FeatureInfo emulateClipOrigin = { 522 "emulateClipOrigin", 523 FeatureCategory::OpenGLWorkarounds, 524 &members, 525 }; 526 527 FeatureInfo bindCompleteFramebufferForTimerQueries = { 528 "bindCompleteFramebufferForTimerQueries", 529 FeatureCategory::OpenGLWorkarounds, 530 &members, 531 }; 532 533 FeatureInfo disableBaseInstanceVertex = { 534 "disableBaseInstanceVertex", 535 FeatureCategory::OpenGLWorkarounds, 536 &members, 537 }; 538 539 FeatureInfo supportsFragmentShaderInterlockNV = { 540 "supportsFragmentShaderInterlockNV", 541 FeatureCategory::OpenGLFeatures, 542 &members, 543 }; 544 545 FeatureInfo supportsFragmentShaderOrderingINTEL = { 546 "supportsFragmentShaderOrderingINTEL", 547 FeatureCategory::OpenGLFeatures, 548 &members, 549 }; 550 551 FeatureInfo supportsFragmentShaderInterlockARB = { 552 "supportsFragmentShaderInterlockARB", 553 FeatureCategory::OpenGLFeatures, 554 &members, 555 }; 556 557 FeatureInfo supportsShaderFramebufferFetchEXT = { 558 "supportsShaderFramebufferFetchEXT", 559 FeatureCategory::OpenGLFeatures, 560 &members, 561 }; 562 563 FeatureInfo supportsShaderFramebufferFetchNonCoherentEXT = { 564 "supportsShaderFramebufferFetchNonCoherentEXT", 565 FeatureCategory::OpenGLFeatures, 566 &members, 567 }; 568 569 FeatureInfo disableClipControl = { 570 "disableClipControl", 571 FeatureCategory::OpenGLFeatures, 572 &members, 573 }; 574 575 FeatureInfo scalarizeVecAndMatConstructorArgs = { 576 "scalarizeVecAndMatConstructorArgs", 577 FeatureCategory::OpenGLWorkarounds, 578 &members, 579 }; 580 581 FeatureInfo ensureNonEmptyBufferIsBoundForDraw = { 582 "ensureNonEmptyBufferIsBoundForDraw", 583 FeatureCategory::OpenGLFeatures, 584 &members, 585 }; 586 587 FeatureInfo explicitFragmentLocations = { 588 "explicitFragmentLocations", 589 FeatureCategory::OpenGLWorkarounds, 590 &members, 591 }; 592 593 FeatureInfo disableRenderSnorm = { 594 "disableRenderSnorm", 595 FeatureCategory::OpenGLWorkarounds, 596 &members, 597 }; 598 599 FeatureInfo disableTextureMirrorClampToEdge = { 600 "disableTextureMirrorClampToEdge", 601 FeatureCategory::OpenGLWorkarounds, 602 &members, 603 }; 604 605 FeatureInfo resyncDepthRangeOnClipControl = { 606 "resyncDepthRangeOnClipControl", 607 FeatureCategory::OpenGLWorkarounds, 608 &members, 609 }; 610 611 FeatureInfo corruptProgramBinaryForTesting = { 612 "corruptProgramBinaryForTesting", 613 FeatureCategory::OpenGLWorkarounds, 614 &members, 615 }; 616 617 FeatureInfo useIntermediateTextureForGenerateMipmap = { 618 "useIntermediateTextureForGenerateMipmap", 619 FeatureCategory::OpenGLWorkarounds, 620 &members, 621 }; 622 623 FeatureInfo avoidBindFragDataLocation = { 624 "avoidBindFragDataLocation", 625 FeatureCategory::OpenGLWorkarounds, 626 &members, 627 }; 628 629 FeatureInfo srgbBlendingBroken = { 630 "srgbBlendingBroken", 631 FeatureCategory::OpenGLWorkarounds, 632 &members, 633 }; 634 635 FeatureInfo bgraTexImageFormatsBroken = { 636 "bgraTexImageFormatsBroken", 637 FeatureCategory::OpenGLWorkarounds, 638 &members, 639 }; 640 641 FeatureInfo disableTiledRendering = { 642 "disableTiledRendering", 643 FeatureCategory::OpenGLWorkarounds, 644 &members, 645 }; 646 647 FeatureInfo disableBlendEquationAdvanced = { 648 "disableBlendEquationAdvanced", 649 FeatureCategory::OpenGLWorkarounds, 650 &members, 651 }; 652 653 }; 654 655 inline FeaturesGL::FeaturesGL() = default; 656 inline FeaturesGL::~FeaturesGL() = default; 657 658 } // namespace angle 659 660 #endif // ANGLE_PLATFORM_AUTOGEN_FEATURESGL_H_ 661