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 "Issue with 1-bit alpha framebuffer formats", 27 &members, 28 }; 29 30 FeatureInfo RGBA4IsNotSupportedForColorRendering = { 31 "RGBA4IsNotSupportedForColorRendering", 32 FeatureCategory::OpenGLWorkarounds, 33 "GL_RGBA4 is not color renderable", 34 &members, 35 }; 36 37 FeatureInfo allowETCFormats = { 38 "allowETCFormats", 39 FeatureCategory::OpenGLWorkarounds, 40 "Enable ETC2/EAC on desktop OpenGL", 41 &members, 42 }; 43 44 FeatureInfo allowAstcFormats = { 45 "allowAstcFormats", 46 FeatureCategory::OpenGLWorkarounds, 47 "Enable ASTC on desktop OpenGL", 48 &members, 49 }; 50 51 FeatureInfo doesSRGBClearsOnLinearFramebufferAttachments = { 52 "doesSRGBClearsOnLinearFramebufferAttachments", 53 FeatureCategory::OpenGLWorkarounds, 54 "Issue clearing framebuffers with linear attachments when GL_FRAMEBUFFER_SRGB is enabled", 55 &members, 56 }; 57 58 FeatureInfo doWhileGLSLCausesGPUHang = { 59 "doWhileGLSLCausesGPUHang", 60 FeatureCategory::OpenGLWorkarounds, 61 "Some GLSL constructs involving do-while loops cause GPU hangs", 62 &members, "http://crbug.com/644669" 63 }; 64 65 FeatureInfo vertexIDDoesNotIncludeBaseVertex = { 66 "vertexIDDoesNotIncludeBaseVertex", 67 FeatureCategory::OpenGLWorkarounds, 68 "gl_VertexID in GLSL vertex shader doesn't include base vertex value", 69 &members, 70 }; 71 72 FeatureInfo finishDoesNotCauseQueriesToBeAvailable = { 73 "finishDoesNotCauseQueriesToBeAvailable", 74 FeatureCategory::OpenGLWorkarounds, 75 "glFinish doesn't cause all queries to report available result", 76 &members, 77 }; 78 79 FeatureInfo alwaysCallUseProgramAfterLink = { 80 "alwaysCallUseProgramAfterLink", 81 FeatureCategory::OpenGLWorkarounds, 82 "Always call useProgram after a successful link to avoid a driver bug", 83 &members, "http://crbug.com/110263" 84 }; 85 86 FeatureInfo unpackOverlappingRowsSeparatelyUnpackBuffer = { 87 "unpackOverlappingRowsSeparatelyUnpackBuffer", 88 FeatureCategory::OpenGLWorkarounds, 89 "In the case of unpacking from a pixel unpack buffer, unpack overlapping rows row by row", 90 &members, 91 }; 92 93 FeatureInfo packOverlappingRowsSeparatelyPackBuffer = { 94 "packOverlappingRowsSeparatelyPackBuffer", 95 FeatureCategory::OpenGLWorkarounds, 96 "In the case of packing to a pixel pack buffer, pack overlapping rows row by row", 97 &members, 98 }; 99 100 FeatureInfo initializeCurrentVertexAttributes = { 101 "initializeCurrentVertexAttributes", 102 FeatureCategory::OpenGLWorkarounds, 103 "During initialization, assign the current vertex attributes to the spec-mandated defaults", 104 &members, 105 }; 106 107 FeatureInfo emulateAbsIntFunction = { 108 "emulateAbsIntFunction", 109 FeatureCategory::OpenGLWorkarounds, 110 "abs(i) where i is an integer returns unexpected result", 111 &members, "http://crbug.com/642227" 112 }; 113 114 FeatureInfo addAndTrueToLoopCondition = { 115 "addAndTrueToLoopCondition", 116 FeatureCategory::OpenGLWorkarounds, 117 "Calculation of loop conditions in for and while loop has bug", 118 &members, 119 }; 120 121 FeatureInfo unpackLastRowSeparatelyForPaddingInclusion = { 122 "unpackLastRowSeparatelyForPaddingInclusion", 123 FeatureCategory::OpenGLWorkarounds, 124 "When uploading textures from an unpack buffer, some drivers count an extra row padding", 125 &members, "http://anglebug.com/1512" 126 }; 127 128 FeatureInfo packLastRowSeparatelyForPaddingInclusion = { 129 "packLastRowSeparatelyForPaddingInclusion", 130 FeatureCategory::OpenGLWorkarounds, 131 "When uploading textures from an pack buffer, some drivers count an extra row padding", 132 &members, "http://anglebug.com/1512" 133 }; 134 135 FeatureInfo emulateIsnanFloat = { 136 "emulateIsnanFloat", 137 FeatureCategory::OpenGLWorkarounds, 138 "Using isnan() on highp float will get wrong answer", 139 &members, "http://crbug.com/650547" 140 }; 141 142 FeatureInfo useUnusedBlocksWithStandardOrSharedLayout = { 143 "useUnusedBlocksWithStandardOrSharedLayout", 144 FeatureCategory::OpenGLWorkarounds, 145 "Unused std140 or shared uniform blocks will be treated as inactive", 146 &members, 147 }; 148 149 FeatureInfo removeInvariantAndCentroidForESSL3 = { 150 "removeInvariantAndCentroidForESSL3", 151 FeatureCategory::OpenGLWorkarounds, 152 "Fix spec difference between GLSL 4.1 or lower and ESSL3", 153 &members, 154 }; 155 156 FeatureInfo rewriteFloatUnaryMinusOperator = { 157 "rewriteFloatUnaryMinusOperator", 158 FeatureCategory::OpenGLWorkarounds, 159 "Using '-<float>' will get wrong answer", 160 &members, "http://crbug.com/308366" 161 }; 162 163 FeatureInfo emulateAtan2Float = { 164 "emulateAtan2Float", 165 FeatureCategory::OpenGLWorkarounds, 166 "atan(y, x) may return a wrong answer", 167 &members, "http://crbug.com/672380" 168 }; 169 170 FeatureInfo reapplyUBOBindingsAfterUsingBinaryProgram = { 171 "reapplyUBOBindingsAfterUsingBinaryProgram", 172 FeatureCategory::OpenGLWorkarounds, 173 "Some drivers forget about UBO bindings when using program binaries", 174 &members, "http://anglebug.com/1637" 175 }; 176 177 FeatureInfo emulateMaxVertexAttribStride = { 178 "emulateMaxVertexAttribStride", 179 FeatureCategory::OpenGLWorkarounds, 180 "Some drivers return 0 when MAX_VERTEX_ATTRIB_STRIED queried", 181 &members, "http://anglebug.com/1936" 182 }; 183 184 FeatureInfo dontInitializeUninitializedLocals = { 185 "dontInitializeUninitializedLocals", 186 FeatureCategory::OpenGLWorkarounds, 187 "Initializing uninitialized locals caused odd behavior in a few WebGL 2 tests", 188 &members, "http://anglebug.com/2046" 189 }; 190 191 FeatureInfo clampPointSize = { 192 "clampPointSize", 193 FeatureCategory::OpenGLWorkarounds, 194 "The point size range reported from the API is inconsistent with the actual behavior", 195 &members, 196 }; 197 198 FeatureInfo dontUseLoopsToInitializeVariables = { 199 "dontUseLoopsToInitializeVariables", 200 FeatureCategory::OpenGLWorkarounds, 201 "For loops used to initialize variables hit native GLSL compiler bugs", 202 &members, "http://crbug.com/809422" 203 }; 204 205 FeatureInfo clampFragDepth = { 206 "clampFragDepth", 207 FeatureCategory::OpenGLWorkarounds, 208 "gl_FragDepth is not clamped correctly when rendering to a floating point depth buffer", 209 &members, 210 }; 211 212 FeatureInfo rewriteRepeatedAssignToSwizzled = { 213 "rewriteRepeatedAssignToSwizzled", 214 FeatureCategory::OpenGLWorkarounds, 215 "Repeated assignment to swizzled values inside a " 216 "GLSL user-defined function have incorrect results", 217 &members, 218 }; 219 220 FeatureInfo disableBlendFuncExtended = { 221 "disableBlendFuncExtended", 222 FeatureCategory::OpenGLWorkarounds, 223 "ARB_blend_func_extended does not pass the tests", 224 &members, "http://anglebug.com/1085" 225 }; 226 227 FeatureInfo unsizedSRGBReadPixelsDoesntTransform = { 228 "unsizedSRGBReadPixelsDoesntTransform", 229 FeatureCategory::OpenGLWorkarounds, 230 "Drivers returning raw sRGB values instead of linearized values when calling glReadPixels " 231 "on unsized sRGB texture formats", 232 &members, "http://crbug.com/550292 http://crbug.com/565179" 233 }; 234 235 FeatureInfo queryCounterBitsGeneratesErrors = { 236 "queryCounterBitsGeneratesErrors", 237 FeatureCategory::OpenGLWorkarounds, 238 "Drivers generate errors when querying the number of bits in timer queries", 239 &members, "http://anglebug.com/3027" 240 }; 241 242 FeatureInfo dontRelinkProgramsInParallel = { 243 "dontRelinkProgramsInParallel", 244 FeatureCategory::OpenGLWorkarounds, 245 "Relinking a program in parallel is buggy", 246 &members, "http://anglebug.com/3045" 247 }; 248 249 FeatureInfo disableWorkerContexts = { 250 "disableWorkerContexts", 251 FeatureCategory::OpenGLWorkarounds, 252 "Some tests have been seen to fail using worker contexts", 253 &members, "http://crbug.com/849576" 254 }; 255 256 FeatureInfo limitWebglMaxTextureSizeTo4096 = { 257 "limitWebglMaxTextureSizeTo4096", 258 FeatureCategory::OpenGLWorkarounds, 259 "Limit webgl max texture size to 4096 to avoid frequent " 260 "out-of-memory errors", 261 &members, "http://crbug.com/927470" 262 }; 263 264 FeatureInfo limitMaxMSAASamplesTo4 = { 265 "limitMaxMSAASamplesTo4", 266 FeatureCategory::OpenGLWorkarounds, 267 "Various rendering bugs have been observed when using higher MSAA counts", 268 &members, "http://crbug.com/797243" 269 }; 270 271 FeatureInfo allowClearForRobustResourceInit = { 272 "allowClearForRobustResourceInit", 273 FeatureCategory::OpenGLWorkarounds, 274 "Using glClear for robust resource initialization is buggy on some drivers and leads to " 275 "texture corruption. Default to data uploads except on MacOS where it is very slow.", 276 &members, "https://crbug.com/848952 http://crbug.com/883276" 277 }; 278 279 FeatureInfo clampArrayAccess = { 280 "clampArrayAccess", 281 FeatureCategory::OpenGLWorkarounds, 282 "Clamp uniform array access to avoid reading invalid memory.", 283 &members, "http://anglebug.com/2978" 284 }; 285 286 FeatureInfo resetTexImage2DBaseLevel = { 287 "resetTexImage2DBaseLevel", 288 FeatureCategory::OpenGLWorkarounds, 289 "Reset texture base level before calling glTexImage2D to " 290 "work around pixel comparison failure.", 291 &members, "https://crbug.com/705865" 292 }; 293 294 FeatureInfo clearToZeroOrOneBroken = { 295 "clearToZeroOrOneBroken", 296 FeatureCategory::OpenGLWorkarounds, 297 "Clears when the clear color is all zeros or ones do not work.", 298 &members, "https://crbug.com/710443" 299 }; 300 301 FeatureInfo limitMax3dArrayTextureSizeTo1024 = { 302 "limitMax3dArrayTextureSizeTo1024", 303 FeatureCategory::OpenGLWorkarounds, 304 "Limit max 3d texture size and max array texture layers to 1024 to avoid system hang", 305 &members, "http://crbug.com/927470" 306 }; 307 308 FeatureInfo adjustSrcDstRegionForBlitFramebuffer = { 309 "adjustSrcDstRegionForBlitFramebuffer", 310 FeatureCategory::OpenGLWorkarounds, 311 "Many platforms have issues with blitFramebuffer when the parameters are large.", 312 &members, "http://crbug.com/830046" 313 }; 314 315 FeatureInfo clipSrcRegionForBlitFramebuffer = { 316 "clipSrcRegionForBlitFramebuffer", 317 FeatureCategory::OpenGLWorkarounds, 318 "Issues with blitFramebuffer when the parameters don't match the framebuffer size.", 319 &members, "http://crbug.com/830046" 320 }; 321 322 FeatureInfo RGBDXT1TexturesSampleZeroAlpha = { 323 "RGBDXT1TexturesSampleZeroAlpha", 324 FeatureCategory::OpenGLWorkarounds, 325 "Sampling BLACK texels from RGB DXT1 textures returns transparent black on Mac.", 326 &members, "http://anglebug.com/3729" 327 }; 328 329 FeatureInfo unfoldShortCircuits = { 330 "unfoldShortCircuits", 331 FeatureCategory::OpenGLWorkarounds, 332 "Mac incorrectly executes both sides of && and || expressions when they should " 333 "short-circuit.", 334 &members, "http://anglebug.com/482" 335 }; 336 337 FeatureInfo emulatePrimitiveRestartFixedIndex = { 338 "emulatePrimitiveRestartFixedIndex", 339 FeatureCategory::OpenGLWorkarounds, 340 "When GL_PRIMITIVE_RESTART_FIXED_INDEX is not available, emulate it with " 341 "GL_PRIMITIVE_RESTART and glPrimitiveRestartIndex.", 342 &members, "http://anglebug.com/3997" 343 }; 344 345 FeatureInfo setPrimitiveRestartFixedIndexForDrawArrays = { 346 "setPrimitiveRestartFixedIndexForDrawArrays", 347 FeatureCategory::OpenGLWorkarounds, 348 "Some drivers discard vertex data in DrawArrays calls when the fixed primitive restart " 349 "index is within the number of primitives being drawn.", 350 &members, "http://anglebug.com/3997" 351 }; 352 353 FeatureInfo removeDynamicIndexingOfSwizzledVector = { 354 "removeDynamicIndexingOfSwizzledVector", 355 FeatureCategory::OpenGLWorkarounds, 356 "Dynamic indexing of swizzled l-values doesn't work correctly on various platforms.", 357 &members, "http://crbug.com/709351" 358 }; 359 360 FeatureInfo preAddTexelFetchOffsets = { 361 "preAddTexelFetchOffsets", 362 FeatureCategory::OpenGLWorkarounds, 363 "Intel Mac drivers mistakenly consider the parameter position of nagative vaule as invalid " 364 "even if the sum of position and offset is in range, so we need to add workarounds by " 365 "rewriting texelFetchOffset(sampler, position, lod, offset) into texelFetch(sampler, " 366 "position + offset, lod).", 367 &members, "http://crbug.com/642605" 368 }; 369 370 FeatureInfo regenerateStructNames = { 371 "regenerateStructNames", 372 FeatureCategory::OpenGLWorkarounds, 373 "All Mac drivers do not handle struct scopes correctly. This workaround overwrites a struct" 374 "name with a unique prefix.", 375 &members, "http://crbug.com/403957" 376 }; 377 378 FeatureInfo readPixelsUsingImplementationColorReadFormatForNorm16 = { 379 "readPixelsUsingImplementationColorReadFormatForNorm16", 380 FeatureCategory::OpenGLWorkarounds, 381 "Quite some OpenGL ES drivers don't implement readPixels for RGBA/UNSIGNED_SHORT from " 382 "EXT_texture_norm16 correctly", 383 &members, "http://anglebug.com/4214" 384 }; 385 386 FeatureInfo flushBeforeDeleteTextureIfCopiedTo = { 387 "flushBeforeDeleteTextureIfCopiedTo", 388 FeatureCategory::OpenGLWorkarounds, 389 "Some drivers track CopyTex{Sub}Image texture dependencies incorrectly. Flush" 390 " before glDeleteTextures in this case", 391 &members, "http://anglebug.com/4267" 392 }; 393 394 FeatureInfo rewriteRowMajorMatrices = { 395 "rewriteRowMajorMatrices", 396 FeatureCategory::OpenGLWorkarounds, 397 "Rewrite row major matrices in shaders as column major as a driver bug workaround", 398 &members, "http://anglebug.com/2273" 399 }; 400 401 FeatureInfo disableDrawBuffersIndexed = { 402 "disableDrawBuffersIndexed", 403 FeatureCategory::OpenGLWorkarounds, 404 "Disable OES_draw_buffers_indexed extension.", 405 &members, 406 }; 407 408 FeatureInfo disableSemaphoreFd = { 409 "disableSemaphoreFd", 410 FeatureCategory::OpenGLWorkarounds, 411 "Disable GL_EXT_semaphore_fd extension", 412 &members, "https://crbug.com/1046462" 413 }; 414 415 FeatureInfo disableTimestampQueries = { 416 "disableTimestampQueries", 417 FeatureCategory::OpenGLWorkarounds, 418 "Disable GL_EXT_disjoint_timer_query extension", 419 &members, "https://crbug.com/811661" 420 }; 421 422 FeatureInfo decodeEncodeSRGBForGenerateMipmap = { 423 "decodeEncodeSRGBForGenerateMipmap", 424 FeatureCategory::OpenGLWorkarounds, 425 "Decode and encode before generateMipmap for srgb format textures.", 426 &members, "http://anglebug.com/4646" 427 }; 428 429 FeatureInfo emulateCopyTexImage2D = { 430 "emulateCopyTexImage2D", 431 FeatureCategory::OpenGLWorkarounds, 432 "Replace CopyTexImage2D with TexImage2D + CopyTexSubImage2D.", 433 &members, 434 }; 435 436 FeatureInfo emulateCopyTexImage2DFromRenderbuffers = { 437 "emulateCopyTexImage2DFromRenderbuffers", 438 FeatureCategory::OpenGLWorkarounds, 439 "CopyTexImage2D spuriously returns errors on iOS when copying from renderbuffers.", 440 &members, "https://anglebug.com/4674" 441 }; 442 443 FeatureInfo disableGPUSwitchingSupport = { 444 "disableGPUSwitchingSupport", 445 FeatureCategory::OpenGLWorkarounds, 446 "Disable GPU switching support (use only the low-power GPU) on older MacBook Pros.", 447 &members, "https://crbug.com/1091824" 448 }; 449 450 FeatureInfo disableNativeParallelCompile = { 451 "disableNativeParallelCompile", 452 FeatureCategory::OpenGLWorkarounds, 453 "Do not use native KHR_parallel_shader_compile even when available.", 454 &members, "http://crbug.com/1094869" 455 }; 456 457 FeatureInfo emulatePackSkipRowsAndPackSkipPixels = { 458 "emulatePackSkipRowsAndPackSkipPixels", 459 FeatureCategory::OpenGLWorkarounds, 460 "GL_PACK_SKIP_ROWS and GL_PACK_SKIP_PIXELS are ignored in Apple's OpenGL driver.", 461 &members, "https://anglebug.com/4849" 462 }; 463 464 FeatureInfo clampMscRate = { 465 "clampMscRate", 466 FeatureCategory::OpenGLWorkarounds, 467 "Some drivers return bogus values for GetMscRate, so we clamp it to 30Hz", 468 &members, "https://crbug.com/1042393" 469 }; 470 471 FeatureInfo bindTransformFeedbackBufferBeforeBindBufferRange = { 472 "bindTransformFeedbackBufferBeforeBindBufferRange", 473 FeatureCategory::OpenGLWorkarounds, 474 "Bind transform feedback buffers to the generic binding point before calling " 475 "glBindBufferBase or glBindBufferRange.", 476 &members, "https://anglebug.com/5140" 477 }; 478 479 FeatureInfo disableSyncControlSupport = { 480 "disableSyncControlSupport", 481 FeatureCategory::OpenGLWorkarounds, 482 "Speculative fix for issues on Linux/Wayland where exposing GLX_OML_sync_control renders " 483 "Chrome unusable", 484 &members, "https://crbug.com/1137851" 485 }; 486 487 FeatureInfo keepBufferShadowCopy = { 488 "keepBufferShadowCopy", 489 FeatureCategory::OpenGLWorkarounds, 490 "Maintain a shadow copy of buffer data when the GL API does not permit reading data back.", 491 &members, 492 }; 493 494 FeatureInfo setZeroLevelBeforeGenerateMipmap = { 495 "setZeroLevelBeforeGenerateMipmap", 496 FeatureCategory::OpenGLWorkarounds, 497 "glGenerateMipmap fails if the zero texture level is not set on some Mac drivers.", 498 &members, 499 }; 500 501 FeatureInfo promotePackedFormatsTo8BitPerChannel = { 502 "promotePackedFormatsTo8BitPerChannel", 503 FeatureCategory::OpenGLWorkarounds, 504 "Packed color formats are buggy on Macs with AMD GPUs", 505 &members, "http://anglebug.com/5469" 506 }; 507 508 FeatureInfo initFragmentOutputVariables = { 509 "initFragmentOutputVariables", 510 FeatureCategory::OpenGLWorkarounds, 511 "No init gl_FragColor causes context lost", 512 &members, "http://crbug.com/1171371" 513 }; 514 515 FeatureInfo shiftInstancedArrayDataWithOffset = { 516 "shiftInstancedArrayDataWithOffset", 517 FeatureCategory::OpenGLWorkarounds, 518 "glDrawArraysInstanced is buggy on certain new Mac Intel GPUs", 519 &members, "http://crbug.com/1144207" 520 }; 521 522 FeatureInfo syncVertexArraysToDefault = { 523 "syncVertexArraysToDefault", 524 FeatureCategory::OpenGLWorkarounds, 525 "Only use the default VAO because of missing support or driver bugs", 526 &members, "http://anglebug.com/5577" 527 }; 528 529 FeatureInfo sanitizeAMDGPURendererString = { 530 "sanitizeAMDGPURendererString", 531 FeatureCategory::OpenGLWorkarounds, 532 "Strip precise kernel and DRM version information from amdgpu renderer strings.", 533 &members, "http://crbug.com/1181193" 534 }; 535 536 FeatureInfo unbindFBOBeforeSwitchingContext = { 537 "unbindFBOBeforeSwitchingContext", 538 FeatureCategory::OpenGLWorkarounds, 539 "Imagination GL drivers are buggy with context switching.", 540 &members, "http://crbug.com/1181193" 541 }; 542 543 FeatureInfo flushOnFramebufferChange = { 544 "flushOnFramebufferChange", 545 FeatureCategory::OpenGLWorkarounds, 546 "Switching framebuffers without a flush can lead to " 547 "crashes on Intel 9th Generation GPU Macs.", 548 &members, "http://crbug.com/1181068" 549 }; 550 551 FeatureInfo disableMultisampledRenderToTexture = { 552 "disableMultisampledRenderToTexture", 553 FeatureCategory::OpenGLWorkarounds, 554 "Many drivers have bugs when using GL_EXT_multisampled_render_to_texture", 555 &members, "http://anglebug.com/2894" 556 }; 557 558 FeatureInfo uploadTextureDataInChunks = { 559 "uploadTextureDataInChunks", 560 FeatureCategory::OpenGLWorkarounds, 561 "Upload texture data in <120kb chunks to work around Mac driver hangs and crashes.", 562 &members, "http://crbug.com/1181068" 563 }; 564 565 FeatureInfo emulateImmutableCompressedTexture3D = { 566 "emulateImmutableCompressedTexture3D", 567 FeatureCategory::OpenGLWorkarounds, 568 "Use non-immutable texture allocation to work around a driver bug.", 569 &members, "https://crbug.com/1060012" 570 }; 571 572 FeatureInfo emulateRGB10 = { 573 "emulateRGB10", 574 FeatureCategory::OpenGLWorkarounds, 575 "Emulate RGB10 support using RGB10_A2.", 576 &members, "https://crbug.com/1300575" 577 }; 578 579 FeatureInfo alwaysUnbindFramebufferTexture2D = { 580 "alwaysUnbindFramebufferTexture2D", 581 FeatureCategory::OpenGLWorkarounds, 582 "Force unbind framebufferTexture2D before binding renderbuffer to work around driver bug.", 583 &members, "https://anglebug.com/5536" 584 }; 585 586 FeatureInfo disableTextureClampToBorder = { 587 "disableTextureClampToBorder", 588 FeatureCategory::OpenGLWorkarounds, 589 "Imagination devices generate INVALID_ENUM when setting the texture border color.", 590 &members, "https://anglebug.com/7405" 591 }; 592 593 FeatureInfo passHighpToPackUnormSnormBuiltins = { 594 "passHighpToPackUnormSnormBuiltins", 595 FeatureCategory::OpenGLWorkarounds, 596 "packUnorm4x8 fails on Pixel 4 if it is not passed a highp vec4.", 597 &members, "http://anglebug.com/7527" 598 }; 599 600 FeatureInfo emulateClipDistanceState = { 601 "emulateClipDistanceState", 602 FeatureCategory::OpenGLWorkarounds, 603 "Some drivers ignore GL_CLIP_DISTANCEi_EXT state.", 604 &members, 605 }; 606 607 FeatureInfo bindCompleteFramebufferForTimerQueries = { 608 "bindCompleteFramebufferForTimerQueries", 609 FeatureCategory::OpenGLWorkarounds, 610 "Some drivers require a complete framebuffer when beginQuery for TimeElapsed or" 611 "Timestampis called.", 612 &members, "https://crbug.com/1356053" 613 }; 614 615 FeatureInfo disableBaseInstanceVertex = { 616 "disableBaseInstanceVertex", 617 FeatureCategory::OpenGLWorkarounds, 618 "Some drivers have buggy implementations of glDraw*BaseVertex*.", 619 &members, "http://anglebug.com/8172" 620 }; 621 622 FeatureInfo supportsFragmentShaderInterlockNV = { 623 "supportsFragmentShaderInterlockNV", 624 FeatureCategory::OpenGLFeatures, 625 "Backend GL context supports NV_fragment_shader_interlock extension", 626 &members, "http://anglebug.com/7279" 627 }; 628 629 FeatureInfo supportsFragmentShaderOrderingINTEL = { 630 "supportsFragmentShaderOrderingINTEL", 631 FeatureCategory::OpenGLFeatures, 632 "Backend GL context supports GL_INTEL_fragment_shader_ordering extension", 633 &members, "http://anglebug.com/7279" 634 }; 635 636 FeatureInfo supportsFragmentShaderInterlockARB = { 637 "supportsFragmentShaderInterlockARB", 638 FeatureCategory::OpenGLFeatures, 639 "Backend GL context supports ARB_fragment_shader_interlock extension", 640 &members, "http://anglebug.com/7279" 641 }; 642 643 FeatureInfo supportsShaderFramebufferFetchEXT = { 644 "supportsShaderFramebufferFetchEXT", 645 FeatureCategory::OpenGLFeatures, 646 "Backend GL context supports EXT_shader_framebuffer_fetch extension", 647 &members, "http://anglebug.com/7279" 648 }; 649 650 FeatureInfo supportsShaderFramebufferFetchNonCoherentEXT = { 651 "supportsShaderFramebufferFetchNonCoherentEXT", 652 FeatureCategory::OpenGLFeatures, 653 "Backend GL context supports EXT_shader_framebuffer_fetch_non_coherent extension", 654 &members, "http://anglebug.com/7279" 655 }; 656 657 FeatureInfo supportsShaderPixelLocalStorageEXT = { 658 "supportsShaderPixelLocalStorageEXT", 659 FeatureCategory::OpenGLFeatures, 660 "Backend GL context supports EXT_shader_pixel_local_storage extension", 661 &members, "http://anglebug.com/7279" 662 }; 663 664 FeatureInfo disableClipControl = { 665 "disableClipControl", 666 FeatureCategory::OpenGLFeatures, 667 "Some devices genenerate errors when querying the clip control state", 668 &members, "http://crbug.com/1434317" 669 }; 670 671 FeatureInfo scalarizeVecAndMatConstructorArgs = { 672 "scalarizeVecAndMatConstructorArgs", 673 FeatureCategory::OpenGLWorkarounds, 674 "Rewrite vec/mat constructors to work around driver bugs", 675 &members, "http://crbug.com/1420130" 676 }; 677 678 FeatureInfo ensureNonEmptyBufferIsBoundForDraw = { 679 "ensureNonEmptyBufferIsBoundForDraw", 680 FeatureCategory::OpenGLFeatures, 681 "Apple OpenGL drivers crash when drawing with a zero-sized buffer bound using a non-zero divisor.", 682 &members, "http://crbug.com/1456243" 683 }; 684 685 }; 686 687 inline FeaturesGL::FeaturesGL() = default; 688 inline FeaturesGL::~FeaturesGL() = default; 689 690 } // namespace angle 691 692 #endif // ANGLE_PLATFORM_AUTOGEN_FEATURESGL_H_ 693