summaryrefslogtreecommitdiffstats
path: root/gfx/angle/checkout/include/platform/FeaturesGL_autogen.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/checkout/include/platform/FeaturesGL_autogen.h')
-rw-r--r--gfx/angle/checkout/include/platform/FeaturesGL_autogen.h501
1 files changed, 501 insertions, 0 deletions
diff --git a/gfx/angle/checkout/include/platform/FeaturesGL_autogen.h b/gfx/angle/checkout/include/platform/FeaturesGL_autogen.h
new file mode 100644
index 0000000000..5376f3400a
--- /dev/null
+++ b/gfx/angle/checkout/include/platform/FeaturesGL_autogen.h
@@ -0,0 +1,501 @@
+// GENERATED FILE - DO NOT EDIT.
+// Generated by gen_features.py using data from gl_features.json.
+//
+// Copyright 2022 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// FeaturesGL_autogen.h: angle::Features and workarounds for GL driver bugs and other issues.
+
+#ifndef ANGLE_PLATFORM_FEATURESGL_H_
+#define ANGLE_PLATFORM_FEATURESGL_H_
+
+#include "platform/Feature.h"
+
+namespace angle
+{
+
+struct FeaturesGL : FeatureSetBase
+{
+ FeaturesGL();
+ ~FeaturesGL();
+
+ FeatureInfo avoid1BitAlphaTextureFormats = {
+ "avoid1BitAlphaTextureFormats",
+ FeatureCategory::OpenGLWorkarounds,
+ "Issue with 1-bit alpha framebuffer formats",
+ &members,
+ };
+
+ FeatureInfo RGBA4IsNotSupportedForColorRendering = {
+ "RGBA4IsNotSupportedForColorRendering",
+ FeatureCategory::OpenGLWorkarounds,
+ "GL_RGBA4 is not color renderable",
+ &members,
+ };
+
+ FeatureInfo allowETCFormats = {
+ "allowETCFormats",
+ FeatureCategory::OpenGLWorkarounds,
+ "Enable ETC2/EAC on desktop OpenGL",
+ &members,
+ };
+
+ FeatureInfo allowAstcFormats = {
+ "allowAstcFormats",
+ FeatureCategory::OpenGLWorkarounds,
+ "Enable ASTC on desktop OpenGL",
+ &members,
+ };
+
+ FeatureInfo doesSRGBClearsOnLinearFramebufferAttachments = {
+ "doesSRGBClearsOnLinearFramebufferAttachments",
+ FeatureCategory::OpenGLWorkarounds,
+ "Issue clearing framebuffers with linear attachments when GL_FRAMEBUFFER_SRGB is enabled",
+ &members,
+ };
+
+ FeatureInfo doWhileGLSLCausesGPUHang = {
+ "doWhileGLSLCausesGPUHang", FeatureCategory::OpenGLWorkarounds,
+ "Some GLSL constructs involving do-while loops cause GPU hangs", &members,
+ "http://crbug.com/644669"};
+
+ FeatureInfo vertexIDDoesNotIncludeBaseVertex = {
+ "vertexIDDoesNotIncludeBaseVertex",
+ FeatureCategory::OpenGLWorkarounds,
+ "gl_VertexID in GLSL vertex shader doesn't include base vertex value",
+ &members,
+ };
+
+ FeatureInfo finishDoesNotCauseQueriesToBeAvailable = {
+ "finishDoesNotCauseQueriesToBeAvailable",
+ FeatureCategory::OpenGLWorkarounds,
+ "glFinish doesn't cause all queries to report available result",
+ &members,
+ };
+
+ FeatureInfo alwaysCallUseProgramAfterLink = {
+ "alwaysCallUseProgramAfterLink", FeatureCategory::OpenGLWorkarounds,
+ "Always call useProgram after a successful link to avoid a driver bug", &members,
+ "http://crbug.com/110263"};
+
+ FeatureInfo unpackOverlappingRowsSeparatelyUnpackBuffer = {
+ "unpackOverlappingRowsSeparatelyUnpackBuffer",
+ FeatureCategory::OpenGLWorkarounds,
+ "In the case of unpacking from a pixel unpack buffer, unpack overlapping rows row by row",
+ &members,
+ };
+
+ FeatureInfo packOverlappingRowsSeparatelyPackBuffer = {
+ "packOverlappingRowsSeparatelyPackBuffer",
+ FeatureCategory::OpenGLWorkarounds,
+ "In the case of packing to a pixel pack buffer, pack overlapping rows row by row",
+ &members,
+ };
+
+ FeatureInfo initializeCurrentVertexAttributes = {
+ "initializeCurrentVertexAttributes",
+ FeatureCategory::OpenGLWorkarounds,
+ "During initialization, assign the current vertex attributes to the spec-mandated defaults",
+ &members,
+ };
+
+ FeatureInfo emulateAbsIntFunction = {"emulateAbsIntFunction",
+ FeatureCategory::OpenGLWorkarounds,
+ "abs(i) where i is an integer returns unexpected result",
+ &members, "http://crbug.com/642227"};
+
+ FeatureInfo addAndTrueToLoopCondition = {
+ "addAndTrueToLoopCondition",
+ FeatureCategory::OpenGLWorkarounds,
+ "Calculation of loop conditions in for and while loop has bug",
+ &members,
+ };
+
+ FeatureInfo unpackLastRowSeparatelyForPaddingInclusion = {
+ "unpackLastRowSeparatelyForPaddingInclusion", FeatureCategory::OpenGLWorkarounds,
+ "When uploading textures from an unpack buffer, some drivers count an extra row padding",
+ &members, "http://anglebug.com/1512"};
+
+ FeatureInfo packLastRowSeparatelyForPaddingInclusion = {
+ "packLastRowSeparatelyForPaddingInclusion", FeatureCategory::OpenGLWorkarounds,
+ "When uploading textures from an pack buffer, some drivers count an extra row padding",
+ &members, "http://anglebug.com/1512"};
+
+ FeatureInfo emulateIsnanFloat = {"emulateIsnanFloat", FeatureCategory::OpenGLWorkarounds,
+ "Using isnan() on highp float will get wrong answer", &members,
+ "http://crbug.com/650547"};
+
+ FeatureInfo useUnusedBlocksWithStandardOrSharedLayout = {
+ "useUnusedBlocksWithStandardOrSharedLayout",
+ FeatureCategory::OpenGLWorkarounds,
+ "Unused std140 or shared uniform blocks will be treated as inactive",
+ &members,
+ };
+
+ FeatureInfo removeInvariantAndCentroidForESSL3 = {
+ "removeInvariantAndCentroidForESSL3",
+ FeatureCategory::OpenGLWorkarounds,
+ "Fix spec difference between GLSL 4.1 or lower and ESSL3",
+ &members,
+ };
+
+ FeatureInfo rewriteFloatUnaryMinusOperator = {
+ "rewriteFloatUnaryMinusOperator", FeatureCategory::OpenGLWorkarounds,
+ "Using '-<float>' will get wrong answer", &members, "http://crbug.com/308366"};
+
+ FeatureInfo emulateAtan2Float = {"emulateAtan2Float", FeatureCategory::OpenGLWorkarounds,
+ "atan(y, x) may return a wrong answer", &members,
+ "http://crbug.com/672380"};
+
+ FeatureInfo reapplyUBOBindingsAfterUsingBinaryProgram = {
+ "reapplyUBOBindingsAfterUsingBinaryProgram", FeatureCategory::OpenGLWorkarounds,
+ "Some drivers forget about UBO bindings when using program binaries", &members,
+ "http://anglebug.com/1637"};
+
+ FeatureInfo emulateMaxVertexAttribStride = {
+ "emulateMaxVertexAttribStride", FeatureCategory::OpenGLWorkarounds,
+ "Some drivers return 0 when MAX_VERTEX_ATTRIB_STRIED queried", &members,
+ "http://anglebug.com/1936"};
+
+ FeatureInfo dontInitializeUninitializedLocals = {
+ "dontInitializeUninitializedLocals", FeatureCategory::OpenGLWorkarounds,
+ "Initializing uninitialized locals caused odd behavior in a few WebGL 2 tests", &members,
+ "http://anglebug.com/2046"};
+
+ FeatureInfo clampPointSize = {
+ "clampPointSize",
+ FeatureCategory::OpenGLWorkarounds,
+ "The point size range reported from the API is inconsistent with the actual behavior",
+ &members,
+ };
+
+ FeatureInfo dontUseLoopsToInitializeVariables = {
+ "dontUseLoopsToInitializeVariables", FeatureCategory::OpenGLWorkarounds,
+ "For loops used to initialize variables hit native GLSL compiler bugs", &members,
+ "http://crbug.com/809422"};
+
+ FeatureInfo clampFragDepth = {
+ "clampFragDepth",
+ FeatureCategory::OpenGLWorkarounds,
+ "gl_FragDepth is not clamped correctly when rendering to a floating point depth buffer",
+ &members,
+ };
+
+ FeatureInfo rewriteRepeatedAssignToSwizzled = {
+ "rewriteRepeatedAssignToSwizzled",
+ FeatureCategory::OpenGLWorkarounds,
+ "Repeated assignment to swizzled values inside a "
+ "GLSL user-defined function have incorrect results",
+ &members,
+ };
+
+ FeatureInfo disableBlendFuncExtended = {
+ "disableBlendFuncExtended", FeatureCategory::OpenGLWorkarounds,
+ "ARB_blend_func_extended does not pass the tests", &members, "http://anglebug.com/1085"};
+
+ FeatureInfo unsizedSRGBReadPixelsDoesntTransform = {
+ "unsizedSRGBReadPixelsDoesntTransform", FeatureCategory::OpenGLWorkarounds,
+ "Drivers returning raw sRGB values instead of linearized values when calling glReadPixels "
+ "on unsized sRGB texture formats",
+ &members, "http://crbug.com/550292 http://crbug.com/565179"};
+
+ FeatureInfo queryCounterBitsGeneratesErrors = {
+ "queryCounterBitsGeneratesErrors", FeatureCategory::OpenGLWorkarounds,
+ "Drivers generate errors when querying the number of bits in timer queries", &members,
+ "http://anglebug.com/3027"};
+
+ FeatureInfo dontRelinkProgramsInParallel = {
+ "dontRelinkProgramsInParallel", FeatureCategory::OpenGLWorkarounds,
+ "Relinking a program in parallel is buggy", &members, "http://anglebug.com/3045"};
+
+ FeatureInfo disableWorkerContexts = {"disableWorkerContexts",
+ FeatureCategory::OpenGLWorkarounds,
+ "Some tests have been seen to fail using worker contexts",
+ &members, "http://crbug.com/849576"};
+
+ FeatureInfo limitWebglMaxTextureSizeTo4096 = {
+ "limitWebglMaxTextureSizeTo4096", FeatureCategory::OpenGLWorkarounds,
+ "Limit webgl max texture size to 4096 to avoid frequent "
+ "out-of-memory errors",
+ &members, "http://crbug.com/927470"};
+
+ FeatureInfo limitMaxMSAASamplesTo4 = {
+ "limitMaxMSAASamplesTo4", FeatureCategory::OpenGLWorkarounds,
+ "Various rendering bugs have been observed when using higher MSAA counts", &members,
+ "http://crbug.com/797243"};
+
+ FeatureInfo allowClearForRobustResourceInit = {
+ "allowClearForRobustResourceInit", FeatureCategory::OpenGLWorkarounds,
+ "Using glClear for robust resource initialization is buggy on some drivers and leads to "
+ "texture corruption. Default to data uploads except on MacOS where it is very slow.",
+ &members, "https://crbug.com/848952 http://crbug.com/883276"};
+
+ FeatureInfo clampArrayAccess = {"clampArrayAccess", FeatureCategory::OpenGLWorkarounds,
+ "Clamp uniform array access to avoid reading invalid memory.",
+ &members, "http://anglebug.com/2978"};
+
+ FeatureInfo resetTexImage2DBaseLevel = {
+ "resetTexImage2DBaseLevel", FeatureCategory::OpenGLWorkarounds,
+ "Reset texture base level before calling glTexImage2D to "
+ "work around pixel comparison failure.",
+ &members, "https://crbug.com/705865"};
+
+ FeatureInfo clearToZeroOrOneBroken = {
+ "clearToZeroOrOneBroken", FeatureCategory::OpenGLWorkarounds,
+ "Clears when the clear color is all zeros or ones do not work.", &members,
+ "https://crbug.com/710443"};
+
+ FeatureInfo limitMax3dArrayTextureSizeTo1024 = {
+ "limitMax3dArrayTextureSizeTo1024", FeatureCategory::OpenGLWorkarounds,
+ "Limit max 3d texture size and max array texture layers to 1024 to avoid system hang",
+ &members, "http://crbug.com/927470"};
+
+ FeatureInfo adjustSrcDstRegionForBlitFramebuffer = {
+ "adjustSrcDstRegionForBlitFramebuffer", FeatureCategory::OpenGLWorkarounds,
+ "Many platforms have issues with blitFramebuffer when the parameters are large.", &members,
+ "http://crbug.com/830046"};
+
+ FeatureInfo clipSrcRegionForBlitFramebuffer = {
+ "clipSrcRegionForBlitFramebuffer", FeatureCategory::OpenGLWorkarounds,
+ "Issues with blitFramebuffer when the parameters don't match the framebuffer size.",
+ &members, "http://crbug.com/830046"};
+
+ FeatureInfo RGBDXT1TexturesSampleZeroAlpha = {
+ "RGBDXT1TexturesSampleZeroAlpha", FeatureCategory::OpenGLWorkarounds,
+ "Sampling BLACK texels from RGB DXT1 textures returns transparent black on Mac.", &members,
+ "http://anglebug.com/3729"};
+
+ FeatureInfo unfoldShortCircuits = {
+ "unfoldShortCircuits", FeatureCategory::OpenGLWorkarounds,
+ "Mac incorrectly executes both sides of && and || expressions when they should "
+ "short-circuit.",
+ &members, "http://anglebug.com/482"};
+
+ FeatureInfo emulatePrimitiveRestartFixedIndex = {
+ "emulatePrimitiveRestartFixedIndex", FeatureCategory::OpenGLWorkarounds,
+ "When GL_PRIMITIVE_RESTART_FIXED_INDEX is not available, emulate it with "
+ "GL_PRIMITIVE_RESTART and glPrimitiveRestartIndex.",
+ &members, "http://anglebug.com/3997"};
+
+ FeatureInfo setPrimitiveRestartFixedIndexForDrawArrays = {
+ "setPrimitiveRestartFixedIndexForDrawArrays", FeatureCategory::OpenGLWorkarounds,
+ "Some drivers discard vertex data in DrawArrays calls when the fixed primitive restart "
+ "index is within the number of primitives being drawn.",
+ &members, "http://anglebug.com/3997"};
+
+ FeatureInfo removeDynamicIndexingOfSwizzledVector = {
+ "removeDynamicIndexingOfSwizzledVector", FeatureCategory::OpenGLWorkarounds,
+ "Dynamic indexing of swizzled l-values doesn't work correctly on various platforms.",
+ &members, "http://crbug.com/709351"};
+
+ FeatureInfo preAddTexelFetchOffsets = {
+ "preAddTexelFetchOffsets", FeatureCategory::OpenGLWorkarounds,
+ "Intel Mac drivers mistakenly consider the parameter position of nagative vaule as invalid "
+ "even if the sum of position and offset is in range, so we need to add workarounds by "
+ "rewriting texelFetchOffset(sampler, position, lod, offset) into texelFetch(sampler, "
+ "position + offset, lod).",
+ &members, "http://crbug.com/642605"};
+
+ FeatureInfo regenerateStructNames = {
+ "regenerateStructNames", FeatureCategory::OpenGLWorkarounds,
+ "All Mac drivers do not handle struct scopes correctly. This workaround overwrites a struct"
+ "name with a unique prefix.",
+ &members, "http://crbug.com/403957"};
+
+ FeatureInfo readPixelsUsingImplementationColorReadFormatForNorm16 = {
+ "readPixelsUsingImplementationColorReadFormatForNorm16", FeatureCategory::OpenGLWorkarounds,
+ "Quite some OpenGL ES drivers don't implement readPixels for RGBA/UNSIGNED_SHORT from "
+ "EXT_texture_norm16 correctly",
+ &members, "http://anglebug.com/4214"};
+
+ FeatureInfo flushBeforeDeleteTextureIfCopiedTo = {
+ "flushBeforeDeleteTextureIfCopiedTo", FeatureCategory::OpenGLWorkarounds,
+ "Some drivers track CopyTex{Sub}Image texture dependencies incorrectly. Flush"
+ " before glDeleteTextures in this case",
+ &members, "http://anglebug.com/4267"};
+
+ FeatureInfo rewriteRowMajorMatrices = {
+ "rewriteRowMajorMatrices", FeatureCategory::OpenGLWorkarounds,
+ "Rewrite row major matrices in shaders as column major as a driver bug workaround",
+ &members, "http://anglebug.com/2273"};
+
+ FeatureInfo disableDrawBuffersIndexed = {
+ "disableDrawBuffersIndexed",
+ FeatureCategory::OpenGLWorkarounds,
+ "Disable OES_draw_buffers_indexed extension.",
+ &members,
+ };
+
+ FeatureInfo disableSemaphoreFd = {"disableSemaphoreFd", FeatureCategory::OpenGLWorkarounds,
+ "Disable GL_EXT_semaphore_fd extension", &members,
+ "https://crbug.com/1046462"};
+
+ FeatureInfo disableTimestampQueries = {
+ "disableTimestampQueries", FeatureCategory::OpenGLWorkarounds,
+ "Disable GL_EXT_disjoint_timer_query extension", &members, "https://crbug.com/811661"};
+
+ FeatureInfo decodeEncodeSRGBForGenerateMipmap = {
+ "decodeEncodeSRGBForGenerateMipmap", FeatureCategory::OpenGLWorkarounds,
+ "Decode and encode before generateMipmap for srgb format textures.", &members,
+ "http://anglebug.com/4646"};
+
+ FeatureInfo emulateCopyTexImage2D = {
+ "emulateCopyTexImage2D",
+ FeatureCategory::OpenGLWorkarounds,
+ "Replace CopyTexImage2D with TexImage2D + CopyTexSubImage2D.",
+ &members,
+ };
+
+ FeatureInfo emulateCopyTexImage2DFromRenderbuffers = {
+ "emulateCopyTexImage2DFromRenderbuffers", FeatureCategory::OpenGLWorkarounds,
+ "CopyTexImage2D spuriously returns errors on iOS when copying from renderbuffers.",
+ &members, "https://anglebug.com/4674"};
+
+ FeatureInfo disableGPUSwitchingSupport = {
+ "disableGPUSwitchingSupport", FeatureCategory::OpenGLWorkarounds,
+ "Disable GPU switching support (use only the low-power GPU) on older MacBook Pros.",
+ &members, "https://crbug.com/1091824"};
+
+ FeatureInfo disableNativeParallelCompile = {
+ "disableNativeParallelCompile", FeatureCategory::OpenGLWorkarounds,
+ "Do not use native KHR_parallel_shader_compile even when available.", &members,
+ "http://crbug.com/1094869"};
+
+ FeatureInfo emulatePackSkipRowsAndPackSkipPixels = {
+ "emulatePackSkipRowsAndPackSkipPixels", FeatureCategory::OpenGLWorkarounds,
+ "GL_PACK_SKIP_ROWS and GL_PACK_SKIP_PIXELS are ignored in Apple's OpenGL driver.", &members,
+ "https://anglebug.com/4849"};
+
+ FeatureInfo clampMscRate = {
+ "clampMscRate", FeatureCategory::OpenGLWorkarounds,
+ "Some drivers return bogus values for GetMscRate, so we clamp it to 30Hz", &members,
+ "https://crbug.com/1042393"};
+
+ FeatureInfo bindTransformFeedbackBufferBeforeBindBufferRange = {
+ "bindTransformFeedbackBufferBeforeBindBufferRange", FeatureCategory::OpenGLWorkarounds,
+ "Bind transform feedback buffers to the generic binding point before calling "
+ "glBindBufferBase or glBindBufferRange.",
+ &members, "https://anglebug.com/5140"};
+
+ FeatureInfo disableSyncControlSupport = {
+ "disableSyncControlSupport", FeatureCategory::OpenGLWorkarounds,
+ "Speculative fix for issues on Linux/Wayland where exposing GLX_OML_sync_control renders "
+ "Chrome unusable",
+ &members, "https://crbug.com/1137851"};
+
+ FeatureInfo keepBufferShadowCopy = {
+ "keepBufferShadowCopy",
+ FeatureCategory::OpenGLWorkarounds,
+ "Maintain a shadow copy of buffer data when the GL API does not permit reading data back.",
+ &members,
+ };
+
+ FeatureInfo setZeroLevelBeforeGenerateMipmap = {
+ "setZeroLevelBeforeGenerateMipmap",
+ FeatureCategory::OpenGLWorkarounds,
+ "glGenerateMipmap fails if the zero texture level is not set on some Mac drivers.",
+ &members,
+ };
+
+ FeatureInfo promotePackedFormatsTo8BitPerChannel = {
+ "promotePackedFormatsTo8BitPerChannel", FeatureCategory::OpenGLWorkarounds,
+ "Packed color formats are buggy on Macs with AMD GPUs", &members,
+ "http://anglebug.com/5469"};
+
+ FeatureInfo initFragmentOutputVariables = {
+ "initFragmentOutputVariables", FeatureCategory::OpenGLWorkarounds,
+ "No init gl_FragColor causes context lost", &members, "http://crbug.com/1171371"};
+
+ FeatureInfo shiftInstancedArrayDataWithOffset = {
+ "shiftInstancedArrayDataWithOffset", FeatureCategory::OpenGLWorkarounds,
+ "glDrawArraysInstanced is buggy on certain new Mac Intel GPUs", &members,
+ "http://crbug.com/1144207"};
+
+ FeatureInfo syncVertexArraysToDefault = {
+ "syncVertexArraysToDefault", FeatureCategory::OpenGLWorkarounds,
+ "Only use the default VAO because of missing support or driver bugs", &members,
+ "http://anglebug.com/5577"};
+
+ FeatureInfo sanitizeAMDGPURendererString = {
+ "sanitizeAMDGPURendererString", FeatureCategory::OpenGLWorkarounds,
+ "Strip precise kernel and DRM version information from amdgpu renderer strings.", &members,
+ "http://crbug.com/1181193"};
+
+ FeatureInfo unbindFBOBeforeSwitchingContext = {
+ "unbindFBOBeforeSwitchingContext", FeatureCategory::OpenGLWorkarounds,
+ "Imagination GL drivers are buggy with context switching.", &members,
+ "http://crbug.com/1181193"};
+
+ FeatureInfo flushOnFramebufferChange = {"flushOnFramebufferChange",
+ FeatureCategory::OpenGLWorkarounds,
+ "Switching framebuffers without a flush can lead to "
+ "crashes on Intel 9th Generation GPU Macs.",
+ &members, "http://crbug.com/1181068"};
+
+ FeatureInfo disableMultisampledRenderToTexture = {
+ "disableMultisampledRenderToTexture", FeatureCategory::OpenGLWorkarounds,
+ "Many drivers have bugs when using GL_EXT_multisampled_render_to_texture", &members,
+ "http://anglebug.com/2894"};
+
+ FeatureInfo uploadTextureDataInChunks = {
+ "uploadTextureDataInChunks", FeatureCategory::OpenGLWorkarounds,
+ "Upload texture data in <120kb chunks to work around Mac driver hangs and crashes.",
+ &members, "http://crbug.com/1181068"};
+
+ FeatureInfo emulateImmutableCompressedTexture3D = {
+ "emulateImmutableCompressedTexture3D", FeatureCategory::OpenGLWorkarounds,
+ "Use non-immutable texture allocation to work around a driver bug.", &members,
+ "https://crbug.com/1060012"};
+
+ FeatureInfo emulateRGB10 = {"emulateRGB10", FeatureCategory::OpenGLWorkarounds,
+ "Emulate RGB10 support using RGB10_A2.", &members,
+ "https://crbug.com/1300575"};
+
+ FeatureInfo alwaysUnbindFramebufferTexture2D = {
+ "alwaysUnbindFramebufferTexture2D", FeatureCategory::OpenGLWorkarounds,
+ "Force unbind framebufferTexture2D before binding renderbuffer to work around driver bug.",
+ &members, "https://anglebug.com/5536"};
+
+ FeatureInfo disableTextureClampToBorder = {
+ "disableTextureClampToBorder", FeatureCategory::OpenGLWorkarounds,
+ "Imagination devices generate INVALID_ENUM when setting the texture border color.",
+ &members, "https://anglebug.com/7405"};
+
+ FeatureInfo passHighpToPackUnormSnormBuiltins = {
+ "passHighpToPackUnormSnormBuiltins", FeatureCategory::OpenGLWorkarounds,
+ "packUnorm4x8 fails on Pixel 4 if it is not passed a highp vec4.", &members,
+ "http://anglebug.com/7527"};
+
+ FeatureInfo supportsFragmentShaderInterlockNV = {
+ "supportsFragmentShaderInterlockNV", FeatureCategory::OpenGLFeatures,
+ "Backend GL context supports NV_fragment_shader_interlock extension", &members,
+ "http://anglebug.com/7279"};
+
+ FeatureInfo supportsFragmentShaderOrderingINTEL = {
+ "supportsFragmentShaderOrderingINTEL", FeatureCategory::OpenGLFeatures,
+ "Backend GL context supports GL_INTEL_fragment_shader_ordering extension", &members,
+ "http://anglebug.com/7279"};
+
+ FeatureInfo supportsFragmentShaderInterlockARB = {
+ "supportsFragmentShaderInterlockARB", FeatureCategory::OpenGLFeatures,
+ "Backend GL context supports ARB_fragment_shader_interlock extension", &members,
+ "http://anglebug.com/7279"};
+
+ FeatureInfo supportsShaderFramebufferFetchEXT = {
+ "supportsShaderFramebufferFetchEXT", FeatureCategory::OpenGLFeatures,
+ "Backend GL context supports EXT_shader_framebuffer_fetch extension", &members,
+ "http://anglebug.com/7279"};
+
+ FeatureInfo supportsShaderFramebufferFetchNonCoherentEXT = {
+ "supportsShaderFramebufferFetchNonCoherentEXT", FeatureCategory::OpenGLFeatures,
+ "Backend GL context supports EXT_shader_framebuffer_fetch_non_coherent extension", &members,
+ "http://anglebug.com/7279"};
+};
+
+inline FeaturesGL::FeaturesGL() = default;
+inline FeaturesGL::~FeaturesGL() = default;
+
+} // namespace angle
+
+#endif // ANGLE_PLATFORM_FEATURESGL_H_