1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2014 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_CAPS_H_ 8*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_CAPS_H_ 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker #include "angle_gl.h" 11*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Version.h" 12*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/angletypes.h" 13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/gles_extensions_autogen.h" 14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/Format.h" 15*8975f5c5SAndroid Build Coastguard Worker 16*8975f5c5SAndroid Build Coastguard Worker #include <array> 17*8975f5c5SAndroid Build Coastguard Worker #include <map> 18*8975f5c5SAndroid Build Coastguard Worker #include <set> 19*8975f5c5SAndroid Build Coastguard Worker #include <string> 20*8975f5c5SAndroid Build Coastguard Worker #include <vector> 21*8975f5c5SAndroid Build Coastguard Worker 22*8975f5c5SAndroid Build Coastguard Worker namespace gl 23*8975f5c5SAndroid Build Coastguard Worker { 24*8975f5c5SAndroid Build Coastguard Worker struct TextureCaps 25*8975f5c5SAndroid Build Coastguard Worker { 26*8975f5c5SAndroid Build Coastguard Worker TextureCaps(); 27*8975f5c5SAndroid Build Coastguard Worker TextureCaps(const TextureCaps &other); 28*8975f5c5SAndroid Build Coastguard Worker TextureCaps &operator=(const TextureCaps &other); 29*8975f5c5SAndroid Build Coastguard Worker 30*8975f5c5SAndroid Build Coastguard Worker ~TextureCaps(); 31*8975f5c5SAndroid Build Coastguard Worker 32*8975f5c5SAndroid Build Coastguard Worker // Supports for basic texturing: glTexImage, glTexSubImage, etc 33*8975f5c5SAndroid Build Coastguard Worker bool texturable = false; 34*8975f5c5SAndroid Build Coastguard Worker 35*8975f5c5SAndroid Build Coastguard Worker // Support for linear or anisotropic filtering 36*8975f5c5SAndroid Build Coastguard Worker bool filterable = false; 37*8975f5c5SAndroid Build Coastguard Worker 38*8975f5c5SAndroid Build Coastguard Worker // Support for being used as a framebuffer attachment, i.e. glFramebufferTexture2D 39*8975f5c5SAndroid Build Coastguard Worker bool textureAttachment = false; 40*8975f5c5SAndroid Build Coastguard Worker 41*8975f5c5SAndroid Build Coastguard Worker // Support for being used as a renderbuffer format, i.e. glFramebufferRenderbuffer 42*8975f5c5SAndroid Build Coastguard Worker bool renderbuffer = false; 43*8975f5c5SAndroid Build Coastguard Worker 44*8975f5c5SAndroid Build Coastguard Worker // Support for blend modes while being used as a framebuffer attachment 45*8975f5c5SAndroid Build Coastguard Worker bool blendable = false; 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker // Set of supported sample counts, only guaranteed to be valid in ES3. 48*8975f5c5SAndroid Build Coastguard Worker SupportedSampleSet sampleCounts; 49*8975f5c5SAndroid Build Coastguard Worker 50*8975f5c5SAndroid Build Coastguard Worker // Get the maximum number of samples supported 51*8975f5c5SAndroid Build Coastguard Worker GLuint getMaxSamples() const; 52*8975f5c5SAndroid Build Coastguard Worker 53*8975f5c5SAndroid Build Coastguard Worker // Get the number of supported samples that is at least as many as requested. Returns 0 if 54*8975f5c5SAndroid Build Coastguard Worker // there are no sample counts available 55*8975f5c5SAndroid Build Coastguard Worker GLuint getNearestSamples(GLuint requestedSamples) const; 56*8975f5c5SAndroid Build Coastguard Worker }; 57*8975f5c5SAndroid Build Coastguard Worker 58*8975f5c5SAndroid Build Coastguard Worker TextureCaps GenerateMinimumTextureCaps(GLenum internalFormat, 59*8975f5c5SAndroid Build Coastguard Worker const Version &clientVersion, 60*8975f5c5SAndroid Build Coastguard Worker const Extensions &extensions); 61*8975f5c5SAndroid Build Coastguard Worker 62*8975f5c5SAndroid Build Coastguard Worker class TextureCapsMap final : angle::NonCopyable 63*8975f5c5SAndroid Build Coastguard Worker { 64*8975f5c5SAndroid Build Coastguard Worker public: 65*8975f5c5SAndroid Build Coastguard Worker TextureCapsMap(); 66*8975f5c5SAndroid Build Coastguard Worker ~TextureCapsMap(); 67*8975f5c5SAndroid Build Coastguard Worker 68*8975f5c5SAndroid Build Coastguard Worker // These methods are deprecated. Please use angle::Format for new features. 69*8975f5c5SAndroid Build Coastguard Worker void insert(GLenum internalFormat, const TextureCaps &caps); 70*8975f5c5SAndroid Build Coastguard Worker const TextureCaps &get(GLenum internalFormat) const; 71*8975f5c5SAndroid Build Coastguard Worker 72*8975f5c5SAndroid Build Coastguard Worker void clear(); 73*8975f5c5SAndroid Build Coastguard Worker 74*8975f5c5SAndroid Build Coastguard Worker // Prefer using angle::Format methods. 75*8975f5c5SAndroid Build Coastguard Worker const TextureCaps &get(angle::FormatID formatID) const; 76*8975f5c5SAndroid Build Coastguard Worker void set(angle::FormatID formatID, const TextureCaps &caps); 77*8975f5c5SAndroid Build Coastguard Worker 78*8975f5c5SAndroid Build Coastguard Worker private: 79*8975f5c5SAndroid Build Coastguard Worker TextureCaps &get(angle::FormatID formatID); 80*8975f5c5SAndroid Build Coastguard Worker 81*8975f5c5SAndroid Build Coastguard Worker // Indexed by angle::FormatID 82*8975f5c5SAndroid Build Coastguard Worker angle::FormatMap<TextureCaps> mFormatData; 83*8975f5c5SAndroid Build Coastguard Worker }; 84*8975f5c5SAndroid Build Coastguard Worker 85*8975f5c5SAndroid Build Coastguard Worker void InitMinimumTextureCapsMap(const Version &clientVersion, 86*8975f5c5SAndroid Build Coastguard Worker const Extensions &extensions, 87*8975f5c5SAndroid Build Coastguard Worker TextureCapsMap *capsMap); 88*8975f5c5SAndroid Build Coastguard Worker 89*8975f5c5SAndroid Build Coastguard Worker // Returns true if all the formats required to support GL_ANGLE_compressed_texture_etc are 90*8975f5c5SAndroid Build Coastguard Worker // present. Does not determine if they are natively supported without decompression. 91*8975f5c5SAndroid Build Coastguard Worker bool DetermineCompressedTextureETCSupport(const TextureCapsMap &textureCaps); 92*8975f5c5SAndroid Build Coastguard Worker 93*8975f5c5SAndroid Build Coastguard Worker // Pointer to a boolean member of the Extensions struct 94*8975f5c5SAndroid Build Coastguard Worker using ExtensionBool = bool Extensions::*; 95*8975f5c5SAndroid Build Coastguard Worker 96*8975f5c5SAndroid Build Coastguard Worker struct ExtensionInfo 97*8975f5c5SAndroid Build Coastguard Worker { 98*8975f5c5SAndroid Build Coastguard Worker // If this extension can be enabled or disabled with glRequestExtension 99*8975f5c5SAndroid Build Coastguard Worker // (GL_ANGLE_request_extension) 100*8975f5c5SAndroid Build Coastguard Worker bool Requestable = false; 101*8975f5c5SAndroid Build Coastguard Worker bool Disablable = false; 102*8975f5c5SAndroid Build Coastguard Worker 103*8975f5c5SAndroid Build Coastguard Worker // Pointer to a boolean member of the Extensions struct 104*8975f5c5SAndroid Build Coastguard Worker ExtensionBool ExtensionsMember = nullptr; 105*8975f5c5SAndroid Build Coastguard Worker }; 106*8975f5c5SAndroid Build Coastguard Worker 107*8975f5c5SAndroid Build Coastguard Worker using ExtensionInfoMap = std::map<std::string, ExtensionInfo>; 108*8975f5c5SAndroid Build Coastguard Worker const ExtensionInfoMap &GetExtensionInfoMap(); 109*8975f5c5SAndroid Build Coastguard Worker 110*8975f5c5SAndroid Build Coastguard Worker struct Limitations 111*8975f5c5SAndroid Build Coastguard Worker { 112*8975f5c5SAndroid Build Coastguard Worker Limitations(); 113*8975f5c5SAndroid Build Coastguard Worker Limitations(const Limitations &other); 114*8975f5c5SAndroid Build Coastguard Worker 115*8975f5c5SAndroid Build Coastguard Worker Limitations &operator=(const Limitations &other); 116*8975f5c5SAndroid Build Coastguard Worker 117*8975f5c5SAndroid Build Coastguard Worker // Renderer doesn't support gl_FrontFacing in fragment shaders 118*8975f5c5SAndroid Build Coastguard Worker bool noFrontFacingSupport = false; 119*8975f5c5SAndroid Build Coastguard Worker 120*8975f5c5SAndroid Build Coastguard Worker // Renderer doesn't support GL_SAMPLE_ALPHA_TO_COVERAGE 121*8975f5c5SAndroid Build Coastguard Worker bool noSampleAlphaToCoverageSupport = false; 122*8975f5c5SAndroid Build Coastguard Worker 123*8975f5c5SAndroid Build Coastguard Worker // In glVertexAttribDivisorANGLE, attribute zero must have a zero divisor 124*8975f5c5SAndroid Build Coastguard Worker bool attributeZeroRequiresZeroDivisorInEXT = false; 125*8975f5c5SAndroid Build Coastguard Worker 126*8975f5c5SAndroid Build Coastguard Worker // Unable to support different values for front and back faces for stencil refs and masks 127*8975f5c5SAndroid Build Coastguard Worker bool noSeparateStencilRefsAndMasks = false; 128*8975f5c5SAndroid Build Coastguard Worker 129*8975f5c5SAndroid Build Coastguard Worker // Renderer doesn't support Simultaneous use of GL_CONSTANT_ALPHA/GL_ONE_MINUS_CONSTANT_ALPHA 130*8975f5c5SAndroid Build Coastguard Worker // and GL_CONSTANT_COLOR/GL_ONE_MINUS_CONSTANT_COLOR blend functions. 131*8975f5c5SAndroid Build Coastguard Worker bool noSimultaneousConstantColorAndAlphaBlendFunc = false; 132*8975f5c5SAndroid Build Coastguard Worker 133*8975f5c5SAndroid Build Coastguard Worker // Renderer always clamps constant blend color. 134*8975f5c5SAndroid Build Coastguard Worker bool noUnclampedBlendColor = false; 135*8975f5c5SAndroid Build Coastguard Worker 136*8975f5c5SAndroid Build Coastguard Worker // D3D9 does not support flexible varying register packing. 137*8975f5c5SAndroid Build Coastguard Worker bool noFlexibleVaryingPacking = false; 138*8975f5c5SAndroid Build Coastguard Worker 139*8975f5c5SAndroid Build Coastguard Worker // D3D does not support having multiple transform feedback outputs go to the same buffer. 140*8975f5c5SAndroid Build Coastguard Worker bool noDoubleBoundTransformFeedbackBuffers = false; 141*8975f5c5SAndroid Build Coastguard Worker 142*8975f5c5SAndroid Build Coastguard Worker // D3D does not support vertex attribute aliasing 143*8975f5c5SAndroid Build Coastguard Worker bool noVertexAttributeAliasing = false; 144*8975f5c5SAndroid Build Coastguard Worker 145*8975f5c5SAndroid Build Coastguard Worker // Renderer doesn't support GL_TEXTURE_COMPARE_MODE=GL_NONE on a shadow sampler. 146*8975f5c5SAndroid Build Coastguard Worker // TODO(http://anglebug.com/42263785): add validation code to front-end. 147*8975f5c5SAndroid Build Coastguard Worker bool noShadowSamplerCompareModeNone = false; 148*8975f5c5SAndroid Build Coastguard Worker 149*8975f5c5SAndroid Build Coastguard Worker // PVRTC1 textures must be squares. 150*8975f5c5SAndroid Build Coastguard Worker bool squarePvrtc1 = false; 151*8975f5c5SAndroid Build Coastguard Worker 152*8975f5c5SAndroid Build Coastguard Worker // ETC1 texture support is emulated. 153*8975f5c5SAndroid Build Coastguard Worker bool emulatedEtc1 = false; 154*8975f5c5SAndroid Build Coastguard Worker 155*8975f5c5SAndroid Build Coastguard Worker // ASTC texture support is emulated. 156*8975f5c5SAndroid Build Coastguard Worker bool emulatedAstc = false; 157*8975f5c5SAndroid Build Coastguard Worker 158*8975f5c5SAndroid Build Coastguard Worker // No compressed TEXTURE_3D support. 159*8975f5c5SAndroid Build Coastguard Worker bool noCompressedTexture3D = false; 160*8975f5c5SAndroid Build Coastguard Worker 161*8975f5c5SAndroid Build Coastguard Worker // D3D does not support compressed textures where the base mip level is not a multiple of 4 162*8975f5c5SAndroid Build Coastguard Worker bool compressedBaseMipLevelMultipleOfFour = false; 163*8975f5c5SAndroid Build Coastguard Worker 164*8975f5c5SAndroid Build Coastguard Worker // An extra limit for WebGL texture size. Ignored if 0. 165*8975f5c5SAndroid Build Coastguard Worker GLint webGLTextureSizeLimit = 0; 166*8975f5c5SAndroid Build Coastguard Worker 167*8975f5c5SAndroid Build Coastguard Worker // GL_ANGLE_multi_draw is emulated and should only be exposed to WebGL. Emulated by default in 168*8975f5c5SAndroid Build Coastguard Worker // shared renderer code. 169*8975f5c5SAndroid Build Coastguard Worker bool multidrawEmulated = true; 170*8975f5c5SAndroid Build Coastguard Worker 171*8975f5c5SAndroid Build Coastguard Worker // GL_ANGLE_base_vertex_base_instance is emulated and should only be exposed to WebGL. Emulated 172*8975f5c5SAndroid Build Coastguard Worker // by default in shared renderer code. 173*8975f5c5SAndroid Build Coastguard Worker bool baseInstanceBaseVertexEmulated = true; 174*8975f5c5SAndroid Build Coastguard Worker 175*8975f5c5SAndroid Build Coastguard Worker // EXT_base_instance is emulated and should only be exposed to WebGL. Emulated by default in 176*8975f5c5SAndroid Build Coastguard Worker // shared renderer code. 177*8975f5c5SAndroid Build Coastguard Worker bool baseInstanceEmulated = true; 178*8975f5c5SAndroid Build Coastguard Worker }; 179*8975f5c5SAndroid Build Coastguard Worker 180*8975f5c5SAndroid Build Coastguard Worker struct TypePrecision 181*8975f5c5SAndroid Build Coastguard Worker { 182*8975f5c5SAndroid Build Coastguard Worker TypePrecision(); 183*8975f5c5SAndroid Build Coastguard Worker TypePrecision(const TypePrecision &other); 184*8975f5c5SAndroid Build Coastguard Worker 185*8975f5c5SAndroid Build Coastguard Worker TypePrecision &operator=(const TypePrecision &other); 186*8975f5c5SAndroid Build Coastguard Worker 187*8975f5c5SAndroid Build Coastguard Worker void setIEEEFloat(); 188*8975f5c5SAndroid Build Coastguard Worker void setIEEEHalfFloat(); 189*8975f5c5SAndroid Build Coastguard Worker void setTwosComplementInt(unsigned int bits); 190*8975f5c5SAndroid Build Coastguard Worker void setSimulatedFloat(unsigned int range, unsigned int precision); 191*8975f5c5SAndroid Build Coastguard Worker void setSimulatedInt(unsigned int range); 192*8975f5c5SAndroid Build Coastguard Worker 193*8975f5c5SAndroid Build Coastguard Worker void get(GLint *returnRange, GLint *returnPrecision) const; 194*8975f5c5SAndroid Build Coastguard Worker 195*8975f5c5SAndroid Build Coastguard Worker std::array<GLint, 2> range = {0, 0}; 196*8975f5c5SAndroid Build Coastguard Worker GLint precision = 0; 197*8975f5c5SAndroid Build Coastguard Worker }; 198*8975f5c5SAndroid Build Coastguard Worker 199*8975f5c5SAndroid Build Coastguard Worker struct Caps 200*8975f5c5SAndroid Build Coastguard Worker { 201*8975f5c5SAndroid Build Coastguard Worker Caps(); 202*8975f5c5SAndroid Build Coastguard Worker Caps(const Caps &other); 203*8975f5c5SAndroid Build Coastguard Worker Caps &operator=(const Caps &other); 204*8975f5c5SAndroid Build Coastguard Worker 205*8975f5c5SAndroid Build Coastguard Worker ~Caps(); 206*8975f5c5SAndroid Build Coastguard Worker 207*8975f5c5SAndroid Build Coastguard Worker // If the values could be got by using GetIntegeri_v, they should 208*8975f5c5SAndroid Build Coastguard Worker // be GLint instead of GLuint and call LimitToInt() to ensure 209*8975f5c5SAndroid Build Coastguard Worker // they will not overflow. 210*8975f5c5SAndroid Build Coastguard Worker 211*8975f5c5SAndroid Build Coastguard Worker GLfloat minInterpolationOffset = 0; 212*8975f5c5SAndroid Build Coastguard Worker GLfloat maxInterpolationOffset = 0; 213*8975f5c5SAndroid Build Coastguard Worker GLint subPixelInterpolationOffsetBits = 0; 214*8975f5c5SAndroid Build Coastguard Worker 215*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) 20.39: implementation dependent values 216*8975f5c5SAndroid Build Coastguard Worker GLint64 maxElementIndex = 0; 217*8975f5c5SAndroid Build Coastguard Worker GLint max3DTextureSize = 0; 218*8975f5c5SAndroid Build Coastguard Worker GLint max2DTextureSize = 0; 219*8975f5c5SAndroid Build Coastguard Worker GLint maxRectangleTextureSize = 0; 220*8975f5c5SAndroid Build Coastguard Worker GLint maxArrayTextureLayers = 0; 221*8975f5c5SAndroid Build Coastguard Worker GLfloat maxLODBias = 0.0f; 222*8975f5c5SAndroid Build Coastguard Worker GLint maxCubeMapTextureSize = 0; 223*8975f5c5SAndroid Build Coastguard Worker GLint maxRenderbufferSize = 0; 224*8975f5c5SAndroid Build Coastguard Worker GLfloat minAliasedPointSize = 1.0f; 225*8975f5c5SAndroid Build Coastguard Worker GLfloat maxAliasedPointSize = 1.0f; 226*8975f5c5SAndroid Build Coastguard Worker GLfloat minAliasedLineWidth = 0.0f; 227*8975f5c5SAndroid Build Coastguard Worker GLfloat maxAliasedLineWidth = 0.0f; 228*8975f5c5SAndroid Build Coastguard Worker 229*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) 20.40: implementation dependent values (cont.) 230*8975f5c5SAndroid Build Coastguard Worker GLint maxDrawBuffers = 0; 231*8975f5c5SAndroid Build Coastguard Worker GLint maxFramebufferWidth = 0; 232*8975f5c5SAndroid Build Coastguard Worker GLint maxFramebufferHeight = 0; 233*8975f5c5SAndroid Build Coastguard Worker GLint maxFramebufferSamples = 0; 234*8975f5c5SAndroid Build Coastguard Worker GLint maxColorAttachments = 0; 235*8975f5c5SAndroid Build Coastguard Worker GLint maxViewportWidth = 0; 236*8975f5c5SAndroid Build Coastguard Worker GLint maxViewportHeight = 0; 237*8975f5c5SAndroid Build Coastguard Worker GLint maxSampleMaskWords = 0; 238*8975f5c5SAndroid Build Coastguard Worker GLint maxColorTextureSamples = 0; 239*8975f5c5SAndroid Build Coastguard Worker GLint maxDepthTextureSamples = 0; 240*8975f5c5SAndroid Build Coastguard Worker GLint maxIntegerSamples = 0; 241*8975f5c5SAndroid Build Coastguard Worker GLint64 maxServerWaitTimeout = 0; 242*8975f5c5SAndroid Build Coastguard Worker 243*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.41: Implementation dependent values (cont.) 244*8975f5c5SAndroid Build Coastguard Worker GLint maxVertexAttribRelativeOffset = 0; 245*8975f5c5SAndroid Build Coastguard Worker GLint maxVertexAttribBindings = 0; 246*8975f5c5SAndroid Build Coastguard Worker GLint maxVertexAttribStride = 0; 247*8975f5c5SAndroid Build Coastguard Worker GLint maxElementsIndices = 0; 248*8975f5c5SAndroid Build Coastguard Worker GLint maxElementsVertices = 0; 249*8975f5c5SAndroid Build Coastguard Worker std::vector<GLenum> compressedTextureFormats; 250*8975f5c5SAndroid Build Coastguard Worker std::vector<GLenum> programBinaryFormats; 251*8975f5c5SAndroid Build Coastguard Worker std::vector<GLenum> shaderBinaryFormats; 252*8975f5c5SAndroid Build Coastguard Worker TypePrecision vertexHighpFloat; 253*8975f5c5SAndroid Build Coastguard Worker TypePrecision vertexMediumpFloat; 254*8975f5c5SAndroid Build Coastguard Worker TypePrecision vertexLowpFloat; 255*8975f5c5SAndroid Build Coastguard Worker TypePrecision vertexHighpInt; 256*8975f5c5SAndroid Build Coastguard Worker TypePrecision vertexMediumpInt; 257*8975f5c5SAndroid Build Coastguard Worker TypePrecision vertexLowpInt; 258*8975f5c5SAndroid Build Coastguard Worker TypePrecision fragmentHighpFloat; 259*8975f5c5SAndroid Build Coastguard Worker TypePrecision fragmentMediumpFloat; 260*8975f5c5SAndroid Build Coastguard Worker TypePrecision fragmentLowpFloat; 261*8975f5c5SAndroid Build Coastguard Worker TypePrecision fragmentHighpInt; 262*8975f5c5SAndroid Build Coastguard Worker TypePrecision fragmentMediumpInt; 263*8975f5c5SAndroid Build Coastguard Worker TypePrecision fragmentLowpInt; 264*8975f5c5SAndroid Build Coastguard Worker 265*8975f5c5SAndroid Build Coastguard Worker // Implementation dependent limits required on all shader types. 266*8975f5c5SAndroid Build Coastguard Worker // TODO([email protected]): organize all such limits into ShaderMap. 267*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.43: Implementation dependent Vertex shader limits 268*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.44: Implementation dependent Fragment shader limits 269*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.45: implementation dependent compute shader limits 270*8975f5c5SAndroid Build Coastguard Worker // GL_EXT_geometry_shader (May 31, 2016) Table 20.43gs: Implementation dependent geometry shader 271*8975f5c5SAndroid Build Coastguard Worker // limits 272*8975f5c5SAndroid Build Coastguard Worker // GL_EXT_geometry_shader (May 31, 2016) Table 20.46: Implementation dependent aggregate shader 273*8975f5c5SAndroid Build Coastguard Worker // limits 274*8975f5c5SAndroid Build Coastguard Worker ShaderMap<GLint> maxShaderUniformBlocks = {}; 275*8975f5c5SAndroid Build Coastguard Worker ShaderMap<GLint> maxShaderTextureImageUnits = {}; 276*8975f5c5SAndroid Build Coastguard Worker ShaderMap<GLint> maxShaderStorageBlocks = {}; 277*8975f5c5SAndroid Build Coastguard Worker ShaderMap<GLint> maxShaderUniformComponents = {}; 278*8975f5c5SAndroid Build Coastguard Worker ShaderMap<GLint> maxShaderAtomicCounterBuffers = {}; 279*8975f5c5SAndroid Build Coastguard Worker ShaderMap<GLint> maxShaderAtomicCounters = {}; 280*8975f5c5SAndroid Build Coastguard Worker ShaderMap<GLint> maxShaderImageUniforms = {}; 281*8975f5c5SAndroid Build Coastguard Worker // Note that we can query MAX_COMPUTE_UNIFORM_COMPONENTS and MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 282*8975f5c5SAndroid Build Coastguard Worker // by GetIntegerv, but we can only use GetInteger64v on MAX_VERTEX_UNIFORM_COMPONENTS and 283*8975f5c5SAndroid Build Coastguard Worker // MAX_FRAGMENT_UNIFORM_COMPONENTS. Currently we use GLuint64 to store all these values so that 284*8975f5c5SAndroid Build Coastguard Worker // we can put them together into one ShaderMap. 285*8975f5c5SAndroid Build Coastguard Worker ShaderMap<GLint64> maxCombinedShaderUniformComponents = {}; 286*8975f5c5SAndroid Build Coastguard Worker 287*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.43: Implementation dependent Vertex shader limits 288*8975f5c5SAndroid Build Coastguard Worker GLint maxVertexAttributes = 0; 289*8975f5c5SAndroid Build Coastguard Worker GLint maxVertexUniformVectors = 0; 290*8975f5c5SAndroid Build Coastguard Worker GLint maxVertexOutputComponents = 0; 291*8975f5c5SAndroid Build Coastguard Worker 292*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.44: Implementation dependent Fragment shader limits 293*8975f5c5SAndroid Build Coastguard Worker GLint maxFragmentUniformVectors = 0; 294*8975f5c5SAndroid Build Coastguard Worker GLint maxFragmentInputComponents = 0; 295*8975f5c5SAndroid Build Coastguard Worker GLint minProgramTextureGatherOffset = 0; 296*8975f5c5SAndroid Build Coastguard Worker GLint maxProgramTextureGatherOffset = 0; 297*8975f5c5SAndroid Build Coastguard Worker GLint minProgramTexelOffset = 0; 298*8975f5c5SAndroid Build Coastguard Worker GLint maxProgramTexelOffset = 0; 299*8975f5c5SAndroid Build Coastguard Worker 300*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.45: implementation dependent compute shader limits 301*8975f5c5SAndroid Build Coastguard Worker std::array<GLint, 3> maxComputeWorkGroupCount = {0, 0, 0}; 302*8975f5c5SAndroid Build Coastguard Worker std::array<GLint, 3> maxComputeWorkGroupSize = {0, 0, 0}; 303*8975f5c5SAndroid Build Coastguard Worker GLint maxComputeWorkGroupInvocations = 0; 304*8975f5c5SAndroid Build Coastguard Worker GLint maxComputeSharedMemorySize = 0; 305*8975f5c5SAndroid Build Coastguard Worker 306*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.46: implementation dependent aggregate shader limits 307*8975f5c5SAndroid Build Coastguard Worker GLint maxUniformBufferBindings = 0; 308*8975f5c5SAndroid Build Coastguard Worker GLint64 maxUniformBlockSize = 0; 309*8975f5c5SAndroid Build Coastguard Worker GLint uniformBufferOffsetAlignment = 0; 310*8975f5c5SAndroid Build Coastguard Worker GLint maxCombinedUniformBlocks = 0; 311*8975f5c5SAndroid Build Coastguard Worker GLint maxVaryingComponents = 0; 312*8975f5c5SAndroid Build Coastguard Worker GLint maxVaryingVectors = 0; 313*8975f5c5SAndroid Build Coastguard Worker GLint maxCombinedTextureImageUnits = 0; 314*8975f5c5SAndroid Build Coastguard Worker GLint maxCombinedShaderOutputResources = 0; 315*8975f5c5SAndroid Build Coastguard Worker 316*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.47: implementation dependent aggregate shader limits (cont.) 317*8975f5c5SAndroid Build Coastguard Worker GLint maxUniformLocations = 0; 318*8975f5c5SAndroid Build Coastguard Worker GLint maxAtomicCounterBufferBindings = 0; 319*8975f5c5SAndroid Build Coastguard Worker GLint maxAtomicCounterBufferSize = 0; 320*8975f5c5SAndroid Build Coastguard Worker GLint maxCombinedAtomicCounterBuffers = 0; 321*8975f5c5SAndroid Build Coastguard Worker GLint maxCombinedAtomicCounters = 0; 322*8975f5c5SAndroid Build Coastguard Worker GLint maxImageUnits = 0; 323*8975f5c5SAndroid Build Coastguard Worker GLint maxCombinedImageUniforms = 0; 324*8975f5c5SAndroid Build Coastguard Worker GLint maxShaderStorageBufferBindings = 0; 325*8975f5c5SAndroid Build Coastguard Worker GLint64 maxShaderStorageBlockSize = 0; 326*8975f5c5SAndroid Build Coastguard Worker GLint maxCombinedShaderStorageBlocks = 0; 327*8975f5c5SAndroid Build Coastguard Worker GLint shaderStorageBufferOffsetAlignment = 0; 328*8975f5c5SAndroid Build Coastguard Worker 329*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.48: implementation dependent transform feedback limits 330*8975f5c5SAndroid Build Coastguard Worker GLint maxTransformFeedbackInterleavedComponents = 0; 331*8975f5c5SAndroid Build Coastguard Worker GLint maxTransformFeedbackSeparateAttributes = 0; 332*8975f5c5SAndroid Build Coastguard Worker GLint maxTransformFeedbackSeparateComponents = 0; 333*8975f5c5SAndroid Build Coastguard Worker 334*8975f5c5SAndroid Build Coastguard Worker // ES 3.1 (April 29, 2015) Table 20.49: Framebuffer Dependent Values 335*8975f5c5SAndroid Build Coastguard Worker GLint maxSamples = 0; 336*8975f5c5SAndroid Build Coastguard Worker 337*8975f5c5SAndroid Build Coastguard Worker // GL_EXT_geometry_shader (May 31, 2016) Table 20.40: Implementation-Dependent Values (cont.) 338*8975f5c5SAndroid Build Coastguard Worker GLint maxFramebufferLayers = 0; 339*8975f5c5SAndroid Build Coastguard Worker GLint layerProvokingVertex = 0; 340*8975f5c5SAndroid Build Coastguard Worker 341*8975f5c5SAndroid Build Coastguard Worker // GL_EXT_geometry_shader (May 31, 2016) Table 20.43gs: Implementation dependent geometry shader 342*8975f5c5SAndroid Build Coastguard Worker // limits 343*8975f5c5SAndroid Build Coastguard Worker GLint maxGeometryInputComponents = 0; 344*8975f5c5SAndroid Build Coastguard Worker GLint maxGeometryOutputComponents = 0; 345*8975f5c5SAndroid Build Coastguard Worker GLint maxGeometryOutputVertices = 0; 346*8975f5c5SAndroid Build Coastguard Worker GLint maxGeometryTotalOutputComponents = 0; 347*8975f5c5SAndroid Build Coastguard Worker GLint maxGeometryShaderInvocations = 0; 348*8975f5c5SAndroid Build Coastguard Worker 349*8975f5c5SAndroid Build Coastguard Worker // GL_EXT_tessellation_shader 350*8975f5c5SAndroid Build Coastguard Worker GLint maxTessControlInputComponents = 0; 351*8975f5c5SAndroid Build Coastguard Worker GLint maxTessControlOutputComponents = 0; 352*8975f5c5SAndroid Build Coastguard Worker GLint maxTessControlTotalOutputComponents = 0; 353*8975f5c5SAndroid Build Coastguard Worker 354*8975f5c5SAndroid Build Coastguard Worker GLint maxTessPatchComponents = 0; 355*8975f5c5SAndroid Build Coastguard Worker GLint maxPatchVertices = 0; 356*8975f5c5SAndroid Build Coastguard Worker GLint maxTessGenLevel = 0; 357*8975f5c5SAndroid Build Coastguard Worker 358*8975f5c5SAndroid Build Coastguard Worker GLint maxTessEvaluationInputComponents = 0; 359*8975f5c5SAndroid Build Coastguard Worker GLint maxTessEvaluationOutputComponents = 0; 360*8975f5c5SAndroid Build Coastguard Worker 361*8975f5c5SAndroid Build Coastguard Worker bool primitiveRestartForPatchesSupported = false; 362*8975f5c5SAndroid Build Coastguard Worker 363*8975f5c5SAndroid Build Coastguard Worker GLuint subPixelBits = 4; 364*8975f5c5SAndroid Build Coastguard Worker 365*8975f5c5SAndroid Build Coastguard Worker // GL_EXT_blend_func_extended 366*8975f5c5SAndroid Build Coastguard Worker GLuint maxDualSourceDrawBuffers = 0; 367*8975f5c5SAndroid Build Coastguard Worker 368*8975f5c5SAndroid Build Coastguard Worker // GL_EXT_texture_filter_anisotropic 369*8975f5c5SAndroid Build Coastguard Worker GLfloat maxTextureAnisotropy = 0.0f; 370*8975f5c5SAndroid Build Coastguard Worker 371*8975f5c5SAndroid Build Coastguard Worker // GL_EXT_disjoint_timer_query 372*8975f5c5SAndroid Build Coastguard Worker GLuint queryCounterBitsTimeElapsed = 0; 373*8975f5c5SAndroid Build Coastguard Worker GLuint queryCounterBitsTimestamp = 0; 374*8975f5c5SAndroid Build Coastguard Worker 375*8975f5c5SAndroid Build Coastguard Worker // OVR_multiview 376*8975f5c5SAndroid Build Coastguard Worker GLuint maxViews = 1; 377*8975f5c5SAndroid Build Coastguard Worker 378*8975f5c5SAndroid Build Coastguard Worker // GL_KHR_debug 379*8975f5c5SAndroid Build Coastguard Worker GLuint maxDebugMessageLength = 0; 380*8975f5c5SAndroid Build Coastguard Worker GLuint maxDebugLoggedMessages = 0; 381*8975f5c5SAndroid Build Coastguard Worker GLuint maxDebugGroupStackDepth = 0; 382*8975f5c5SAndroid Build Coastguard Worker GLuint maxLabelLength = 0; 383*8975f5c5SAndroid Build Coastguard Worker 384*8975f5c5SAndroid Build Coastguard Worker // GL_APPLE_clip_distance / GL_EXT_clip_cull_distance / GL_ANGLE_clip_cull_distance 385*8975f5c5SAndroid Build Coastguard Worker GLuint maxClipDistances = 0; 386*8975f5c5SAndroid Build Coastguard Worker GLuint maxCullDistances = 0; 387*8975f5c5SAndroid Build Coastguard Worker GLuint maxCombinedClipAndCullDistances = 0; 388*8975f5c5SAndroid Build Coastguard Worker 389*8975f5c5SAndroid Build Coastguard Worker // GL_ANGLE_shader_pixel_local_storage 390*8975f5c5SAndroid Build Coastguard Worker GLuint maxPixelLocalStoragePlanes = 0; 391*8975f5c5SAndroid Build Coastguard Worker GLuint maxColorAttachmentsWithActivePixelLocalStorage = 0; 392*8975f5c5SAndroid Build Coastguard Worker GLuint maxCombinedDrawBuffersAndPixelLocalStoragePlanes = 0; 393*8975f5c5SAndroid Build Coastguard Worker 394*8975f5c5SAndroid Build Coastguard Worker // GL_EXT_shader_pixel_local_storage. 395*8975f5c5SAndroid Build Coastguard Worker GLuint maxShaderPixelLocalStorageFastSizeEXT = 0; 396*8975f5c5SAndroid Build Coastguard Worker 397*8975f5c5SAndroid Build Coastguard Worker // GLES1 emulation: Caps for ES 1.1. Taken from Table 6.20 / 6.22 in the OpenGL ES 1.1 spec. 398*8975f5c5SAndroid Build Coastguard Worker GLuint maxMultitextureUnits = 0; 399*8975f5c5SAndroid Build Coastguard Worker GLuint maxClipPlanes = 0; 400*8975f5c5SAndroid Build Coastguard Worker GLuint maxLights = 0; 401*8975f5c5SAndroid Build Coastguard Worker static constexpr int GlobalMatrixStackDepth = 16; 402*8975f5c5SAndroid Build Coastguard Worker GLuint maxModelviewMatrixStackDepth = 0; 403*8975f5c5SAndroid Build Coastguard Worker GLuint maxProjectionMatrixStackDepth = 0; 404*8975f5c5SAndroid Build Coastguard Worker GLuint maxTextureMatrixStackDepth = 0; 405*8975f5c5SAndroid Build Coastguard Worker GLfloat minSmoothPointSize = 0.0f; 406*8975f5c5SAndroid Build Coastguard Worker GLfloat maxSmoothPointSize = 0.0f; 407*8975f5c5SAndroid Build Coastguard Worker GLfloat minSmoothLineWidth = 0.0f; 408*8975f5c5SAndroid Build Coastguard Worker GLfloat maxSmoothLineWidth = 0.0f; 409*8975f5c5SAndroid Build Coastguard Worker 410*8975f5c5SAndroid Build Coastguard Worker // ES 3.2 Table 21.40: Implementation Dependent Values 411*8975f5c5SAndroid Build Coastguard Worker GLfloat lineWidthGranularity = 0.0f; 412*8975f5c5SAndroid Build Coastguard Worker GLfloat minMultisampleLineWidth = 0.0f; 413*8975f5c5SAndroid Build Coastguard Worker GLfloat maxMultisampleLineWidth = 0.0f; 414*8975f5c5SAndroid Build Coastguard Worker 415*8975f5c5SAndroid Build Coastguard Worker // ES 3.2 Table 21.42: Implementation Dependent Values (cont.) 416*8975f5c5SAndroid Build Coastguard Worker GLint maxTextureBufferSize = 0; 417*8975f5c5SAndroid Build Coastguard Worker GLint textureBufferOffsetAlignment = 0; 418*8975f5c5SAndroid Build Coastguard Worker 419*8975f5c5SAndroid Build Coastguard Worker // GL_ARM_shader_framebuffer_fetch 420*8975f5c5SAndroid Build Coastguard Worker bool fragmentShaderFramebufferFetchMRT = false; 421*8975f5c5SAndroid Build Coastguard Worker }; 422*8975f5c5SAndroid Build Coastguard Worker 423*8975f5c5SAndroid Build Coastguard Worker Caps GenerateMinimumCaps(const Version &clientVersion, const Extensions &extensions); 424*8975f5c5SAndroid Build Coastguard Worker } // namespace gl 425*8975f5c5SAndroid Build Coastguard Worker 426*8975f5c5SAndroid Build Coastguard Worker namespace egl 427*8975f5c5SAndroid Build Coastguard Worker { 428*8975f5c5SAndroid Build Coastguard Worker 429*8975f5c5SAndroid Build Coastguard Worker struct Caps 430*8975f5c5SAndroid Build Coastguard Worker { 431*8975f5c5SAndroid Build Coastguard Worker Caps(); 432*8975f5c5SAndroid Build Coastguard Worker 433*8975f5c5SAndroid Build Coastguard Worker // Support for NPOT surfaces 434*8975f5c5SAndroid Build Coastguard Worker bool textureNPOT = false; 435*8975f5c5SAndroid Build Coastguard Worker 436*8975f5c5SAndroid Build Coastguard Worker // Support for Stencil8 configs 437*8975f5c5SAndroid Build Coastguard Worker bool stencil8 = false; 438*8975f5c5SAndroid Build Coastguard Worker }; 439*8975f5c5SAndroid Build Coastguard Worker 440*8975f5c5SAndroid Build Coastguard Worker struct DisplayExtensions 441*8975f5c5SAndroid Build Coastguard Worker { 442*8975f5c5SAndroid Build Coastguard Worker DisplayExtensions(); 443*8975f5c5SAndroid Build Coastguard Worker 444*8975f5c5SAndroid Build Coastguard Worker // Generate a vector of supported extension strings 445*8975f5c5SAndroid Build Coastguard Worker std::vector<std::string> getStrings() const; 446*8975f5c5SAndroid Build Coastguard Worker 447*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_create_context_robustness 448*8975f5c5SAndroid Build Coastguard Worker bool createContextRobustness = false; 449*8975f5c5SAndroid Build Coastguard Worker 450*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_d3d_share_handle_client_buffer 451*8975f5c5SAndroid Build Coastguard Worker bool d3dShareHandleClientBuffer = false; 452*8975f5c5SAndroid Build Coastguard Worker 453*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_d3d_texture_client_buffer 454*8975f5c5SAndroid Build Coastguard Worker bool d3dTextureClientBuffer = false; 455*8975f5c5SAndroid Build Coastguard Worker 456*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_surface_d3d_texture_2d_share_handle 457*8975f5c5SAndroid Build Coastguard Worker bool surfaceD3DTexture2DShareHandle = false; 458*8975f5c5SAndroid Build Coastguard Worker 459*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_query_surface_pointer 460*8975f5c5SAndroid Build Coastguard Worker bool querySurfacePointer = false; 461*8975f5c5SAndroid Build Coastguard Worker 462*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_window_fixed_size 463*8975f5c5SAndroid Build Coastguard Worker bool windowFixedSize = false; 464*8975f5c5SAndroid Build Coastguard Worker 465*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_keyed_mutex 466*8975f5c5SAndroid Build Coastguard Worker bool keyedMutex = false; 467*8975f5c5SAndroid Build Coastguard Worker 468*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_surface_orientation 469*8975f5c5SAndroid Build Coastguard Worker bool surfaceOrientation = false; 470*8975f5c5SAndroid Build Coastguard Worker 471*8975f5c5SAndroid Build Coastguard Worker // EGL_NV_post_sub_buffer 472*8975f5c5SAndroid Build Coastguard Worker bool postSubBuffer = false; 473*8975f5c5SAndroid Build Coastguard Worker 474*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_create_context 475*8975f5c5SAndroid Build Coastguard Worker bool createContext = false; 476*8975f5c5SAndroid Build Coastguard Worker 477*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_image 478*8975f5c5SAndroid Build Coastguard Worker bool image = false; 479*8975f5c5SAndroid Build Coastguard Worker 480*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_image_base 481*8975f5c5SAndroid Build Coastguard Worker bool imageBase = false; 482*8975f5c5SAndroid Build Coastguard Worker 483*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_image_pixmap 484*8975f5c5SAndroid Build Coastguard Worker bool imagePixmap = false; 485*8975f5c5SAndroid Build Coastguard Worker 486*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_gl_texture_2D_image 487*8975f5c5SAndroid Build Coastguard Worker bool glTexture2DImage = false; 488*8975f5c5SAndroid Build Coastguard Worker 489*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_gl_texture_cubemap_image 490*8975f5c5SAndroid Build Coastguard Worker bool glTextureCubemapImage = false; 491*8975f5c5SAndroid Build Coastguard Worker 492*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_gl_texture_3D_image 493*8975f5c5SAndroid Build Coastguard Worker bool glTexture3DImage = false; 494*8975f5c5SAndroid Build Coastguard Worker 495*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_gl_renderbuffer_image 496*8975f5c5SAndroid Build Coastguard Worker bool glRenderbufferImage = false; 497*8975f5c5SAndroid Build Coastguard Worker 498*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_get_all_proc_addresses 499*8975f5c5SAndroid Build Coastguard Worker bool getAllProcAddresses = false; 500*8975f5c5SAndroid Build Coastguard Worker 501*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_direct_composition 502*8975f5c5SAndroid Build Coastguard Worker bool directComposition = false; 503*8975f5c5SAndroid Build Coastguard Worker 504*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_windows_ui_composition 505*8975f5c5SAndroid Build Coastguard Worker bool windowsUIComposition = false; 506*8975f5c5SAndroid Build Coastguard Worker 507*8975f5c5SAndroid Build Coastguard Worker // KHR_create_context_no_error 508*8975f5c5SAndroid Build Coastguard Worker bool createContextNoError = false; 509*8975f5c5SAndroid Build Coastguard Worker 510*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_stream 511*8975f5c5SAndroid Build Coastguard Worker bool stream = false; 512*8975f5c5SAndroid Build Coastguard Worker 513*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_stream_consumer_gltexture 514*8975f5c5SAndroid Build Coastguard Worker bool streamConsumerGLTexture = false; 515*8975f5c5SAndroid Build Coastguard Worker 516*8975f5c5SAndroid Build Coastguard Worker // EGL_NV_stream_consumer_gltexture_yuv 517*8975f5c5SAndroid Build Coastguard Worker bool streamConsumerGLTextureYUV = false; 518*8975f5c5SAndroid Build Coastguard Worker 519*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_stream_producer_d3d_texture 520*8975f5c5SAndroid Build Coastguard Worker bool streamProducerD3DTexture = false; 521*8975f5c5SAndroid Build Coastguard Worker 522*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_fence_sync 523*8975f5c5SAndroid Build Coastguard Worker bool fenceSync = false; 524*8975f5c5SAndroid Build Coastguard Worker 525*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_wait_sync 526*8975f5c5SAndroid Build Coastguard Worker bool waitSync = false; 527*8975f5c5SAndroid Build Coastguard Worker 528*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_create_context_webgl_compatibility 529*8975f5c5SAndroid Build Coastguard Worker bool createContextWebGLCompatibility = false; 530*8975f5c5SAndroid Build Coastguard Worker 531*8975f5c5SAndroid Build Coastguard Worker // EGL_CHROMIUM_create_context_bind_generates_resource 532*8975f5c5SAndroid Build Coastguard Worker bool createContextBindGeneratesResource = false; 533*8975f5c5SAndroid Build Coastguard Worker 534*8975f5c5SAndroid Build Coastguard Worker // EGL_CHROMIUM_sync_control 535*8975f5c5SAndroid Build Coastguard Worker bool syncControlCHROMIUM = false; 536*8975f5c5SAndroid Build Coastguard Worker 537*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_sync_control_rate 538*8975f5c5SAndroid Build Coastguard Worker bool syncControlRateANGLE = false; 539*8975f5c5SAndroid Build Coastguard Worker 540*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_swap_buffers_with_damage 541*8975f5c5SAndroid Build Coastguard Worker bool swapBuffersWithDamage = false; 542*8975f5c5SAndroid Build Coastguard Worker 543*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_pixel_format_float 544*8975f5c5SAndroid Build Coastguard Worker bool pixelFormatFloat = false; 545*8975f5c5SAndroid Build Coastguard Worker 546*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_surfaceless_context 547*8975f5c5SAndroid Build Coastguard Worker bool surfacelessContext = false; 548*8975f5c5SAndroid Build Coastguard Worker 549*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_display_texture_share_group 550*8975f5c5SAndroid Build Coastguard Worker bool displayTextureShareGroup = false; 551*8975f5c5SAndroid Build Coastguard Worker 552*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_display_semaphore_share_group 553*8975f5c5SAndroid Build Coastguard Worker bool displaySemaphoreShareGroup = false; 554*8975f5c5SAndroid Build Coastguard Worker 555*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_create_context_client_arrays 556*8975f5c5SAndroid Build Coastguard Worker bool createContextClientArrays = false; 557*8975f5c5SAndroid Build Coastguard Worker 558*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_program_cache_control 559*8975f5c5SAndroid Build Coastguard Worker bool programCacheControlANGLE = false; 560*8975f5c5SAndroid Build Coastguard Worker 561*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_robust_resource_initialization 562*8975f5c5SAndroid Build Coastguard Worker bool robustResourceInitializationANGLE = false; 563*8975f5c5SAndroid Build Coastguard Worker 564*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_iosurface_client_buffer 565*8975f5c5SAndroid Build Coastguard Worker bool iosurfaceClientBuffer = false; 566*8975f5c5SAndroid Build Coastguard Worker 567*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_metal_texture_client_buffer 568*8975f5c5SAndroid Build Coastguard Worker bool mtlTextureClientBuffer = false; 569*8975f5c5SAndroid Build Coastguard Worker 570*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_create_context_extensions_enabled 571*8975f5c5SAndroid Build Coastguard Worker bool createContextExtensionsEnabled = false; 572*8975f5c5SAndroid Build Coastguard Worker 573*8975f5c5SAndroid Build Coastguard Worker // EGL_ANDROID_presentation_time 574*8975f5c5SAndroid Build Coastguard Worker bool presentationTime = false; 575*8975f5c5SAndroid Build Coastguard Worker 576*8975f5c5SAndroid Build Coastguard Worker // EGL_ANDROID_blob_cache 577*8975f5c5SAndroid Build Coastguard Worker bool blobCache = false; 578*8975f5c5SAndroid Build Coastguard Worker 579*8975f5c5SAndroid Build Coastguard Worker // EGL_ANDROID_image_native_buffer 580*8975f5c5SAndroid Build Coastguard Worker bool imageNativeBuffer = false; 581*8975f5c5SAndroid Build Coastguard Worker 582*8975f5c5SAndroid Build Coastguard Worker // EGL_ANDROID_get_frame_timestamps 583*8975f5c5SAndroid Build Coastguard Worker bool getFrameTimestamps = false; 584*8975f5c5SAndroid Build Coastguard Worker 585*8975f5c5SAndroid Build Coastguard Worker // EGL_ANDROID_front_buffer_auto_refresh 586*8975f5c5SAndroid Build Coastguard Worker bool frontBufferAutoRefreshANDROID = false; 587*8975f5c5SAndroid Build Coastguard Worker 588*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_timestamp_surface_attribute 589*8975f5c5SAndroid Build Coastguard Worker bool timestampSurfaceAttributeANGLE = false; 590*8975f5c5SAndroid Build Coastguard Worker 591*8975f5c5SAndroid Build Coastguard Worker // EGL_ANDROID_recordable 592*8975f5c5SAndroid Build Coastguard Worker bool recordable = false; 593*8975f5c5SAndroid Build Coastguard Worker 594*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_power_preference 595*8975f5c5SAndroid Build Coastguard Worker bool powerPreference = false; 596*8975f5c5SAndroid Build Coastguard Worker 597*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_wait_until_work_scheduled 598*8975f5c5SAndroid Build Coastguard Worker bool waitUntilWorkScheduled = false; 599*8975f5c5SAndroid Build Coastguard Worker 600*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_image_d3d11_texture 601*8975f5c5SAndroid Build Coastguard Worker bool imageD3D11Texture = false; 602*8975f5c5SAndroid Build Coastguard Worker 603*8975f5c5SAndroid Build Coastguard Worker // EGL_ANDROID_get_native_client_buffer 604*8975f5c5SAndroid Build Coastguard Worker bool getNativeClientBufferANDROID = false; 605*8975f5c5SAndroid Build Coastguard Worker 606*8975f5c5SAndroid Build Coastguard Worker // EGL_ANDROID_create_native_client_buffer 607*8975f5c5SAndroid Build Coastguard Worker bool createNativeClientBufferANDROID = false; 608*8975f5c5SAndroid Build Coastguard Worker 609*8975f5c5SAndroid Build Coastguard Worker // EGL_ANDROID_native_fence_sync 610*8975f5c5SAndroid Build Coastguard Worker bool nativeFenceSyncANDROID = false; 611*8975f5c5SAndroid Build Coastguard Worker 612*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_create_context_backwards_compatible 613*8975f5c5SAndroid Build Coastguard Worker bool createContextBackwardsCompatible = false; 614*8975f5c5SAndroid Build Coastguard Worker 615*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_no_config_context 616*8975f5c5SAndroid Build Coastguard Worker bool noConfigContext = false; 617*8975f5c5SAndroid Build Coastguard Worker 618*8975f5c5SAndroid Build Coastguard Worker // EGL_IMG_context_priority 619*8975f5c5SAndroid Build Coastguard Worker bool contextPriority = false; 620*8975f5c5SAndroid Build Coastguard Worker 621*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_ggp_stream_descriptor 622*8975f5c5SAndroid Build Coastguard Worker bool ggpStreamDescriptor = false; 623*8975f5c5SAndroid Build Coastguard Worker 624*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_swap_with_frame_token 625*8975f5c5SAndroid Build Coastguard Worker bool swapWithFrameToken = false; 626*8975f5c5SAndroid Build Coastguard Worker 627*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_gl_colorspace 628*8975f5c5SAndroid Build Coastguard Worker bool glColorspace = false; 629*8975f5c5SAndroid Build Coastguard Worker 630*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_gl_colorspace_display_p3_linear 631*8975f5c5SAndroid Build Coastguard Worker bool glColorspaceDisplayP3Linear = false; 632*8975f5c5SAndroid Build Coastguard Worker 633*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_gl_colorspace_display_p3 634*8975f5c5SAndroid Build Coastguard Worker bool glColorspaceDisplayP3 = false; 635*8975f5c5SAndroid Build Coastguard Worker 636*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_gl_colorspace_scrgb 637*8975f5c5SAndroid Build Coastguard Worker bool glColorspaceScrgb = false; 638*8975f5c5SAndroid Build Coastguard Worker 639*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_gl_colorspace_scrgb_linear 640*8975f5c5SAndroid Build Coastguard Worker bool glColorspaceScrgbLinear = false; 641*8975f5c5SAndroid Build Coastguard Worker 642*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_gl_colorspace_display_p3_passthrough 643*8975f5c5SAndroid Build Coastguard Worker bool glColorspaceDisplayP3Passthrough = false; 644*8975f5c5SAndroid Build Coastguard Worker 645*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_colorspace_attribute_passthrough 646*8975f5c5SAndroid Build Coastguard Worker bool eglColorspaceAttributePassthroughANGLE = false; 647*8975f5c5SAndroid Build Coastguard Worker 648*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_gl_colorspace_bt2020_linear 649*8975f5c5SAndroid Build Coastguard Worker bool glColorspaceBt2020Linear = false; 650*8975f5c5SAndroid Build Coastguard Worker 651*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_gl_colorspace_bt2020_pq 652*8975f5c5SAndroid Build Coastguard Worker bool glColorspaceBt2020Pq = false; 653*8975f5c5SAndroid Build Coastguard Worker 654*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_gl_colorspace_bt2020_hlg 655*8975f5c5SAndroid Build Coastguard Worker bool glColorspaceBt2020Hlg = false; 656*8975f5c5SAndroid Build Coastguard Worker 657*8975f5c5SAndroid Build Coastguard Worker // EGL_ANDROID_framebuffer_target 658*8975f5c5SAndroid Build Coastguard Worker bool framebufferTargetANDROID = false; 659*8975f5c5SAndroid Build Coastguard Worker 660*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_image_gl_colorspace 661*8975f5c5SAndroid Build Coastguard Worker bool imageGlColorspace = false; 662*8975f5c5SAndroid Build Coastguard Worker 663*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_image_dma_buf_import 664*8975f5c5SAndroid Build Coastguard Worker bool imageDmaBufImportEXT = false; 665*8975f5c5SAndroid Build Coastguard Worker 666*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_image_dma_buf_import_modifiers 667*8975f5c5SAndroid Build Coastguard Worker bool imageDmaBufImportModifiersEXT = false; 668*8975f5c5SAndroid Build Coastguard Worker 669*8975f5c5SAndroid Build Coastguard Worker // EGL_NOK_texture_from_pixmap 670*8975f5c5SAndroid Build Coastguard Worker bool textureFromPixmapNOK = false; 671*8975f5c5SAndroid Build Coastguard Worker 672*8975f5c5SAndroid Build Coastguard Worker // EGL_NV_robustness_video_memory_purge 673*8975f5c5SAndroid Build Coastguard Worker bool robustnessVideoMemoryPurgeNV = false; 674*8975f5c5SAndroid Build Coastguard Worker 675*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_reusable_sync 676*8975f5c5SAndroid Build Coastguard Worker bool reusableSyncKHR = false; 677*8975f5c5SAndroid Build Coastguard Worker 678*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_external_context_and_surface 679*8975f5c5SAndroid Build Coastguard Worker bool externalContextAndSurface = false; 680*8975f5c5SAndroid Build Coastguard Worker 681*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_buffer_age 682*8975f5c5SAndroid Build Coastguard Worker bool bufferAgeEXT = false; 683*8975f5c5SAndroid Build Coastguard Worker 684*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_mutable_render_buffer 685*8975f5c5SAndroid Build Coastguard Worker bool mutableRenderBufferKHR = false; 686*8975f5c5SAndroid Build Coastguard Worker 687*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_protected_content 688*8975f5c5SAndroid Build Coastguard Worker bool protectedContentEXT = false; 689*8975f5c5SAndroid Build Coastguard Worker 690*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_create_surface_swap_interval 691*8975f5c5SAndroid Build Coastguard Worker bool createSurfaceSwapIntervalANGLE = false; 692*8975f5c5SAndroid Build Coastguard Worker 693*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_context_virtualization 694*8975f5c5SAndroid Build Coastguard Worker bool contextVirtualizationANGLE = false; 695*8975f5c5SAndroid Build Coastguard Worker 696*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_lock_surface3 697*8975f5c5SAndroid Build Coastguard Worker bool lockSurface3KHR = false; 698*8975f5c5SAndroid Build Coastguard Worker 699*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_vulkan_image 700*8975f5c5SAndroid Build Coastguard Worker bool vulkanImageANGLE = false; 701*8975f5c5SAndroid Build Coastguard Worker 702*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_metal_create_context_ownership_identity 703*8975f5c5SAndroid Build Coastguard Worker bool metalCreateContextOwnershipIdentityANGLE = false; 704*8975f5c5SAndroid Build Coastguard Worker 705*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_partial_update 706*8975f5c5SAndroid Build Coastguard Worker bool partialUpdateKHR = false; 707*8975f5c5SAndroid Build Coastguard Worker 708*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_metal_shared_event_sync 709*8975f5c5SAndroid Build Coastguard Worker bool mtlSyncSharedEventANGLE = false; 710*8975f5c5SAndroid Build Coastguard Worker 711*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_global_fence_sync 712*8975f5c5SAndroid Build Coastguard Worker bool globalFenceSyncANGLE = false; 713*8975f5c5SAndroid Build Coastguard Worker }; 714*8975f5c5SAndroid Build Coastguard Worker 715*8975f5c5SAndroid Build Coastguard Worker struct DeviceExtensions 716*8975f5c5SAndroid Build Coastguard Worker { 717*8975f5c5SAndroid Build Coastguard Worker DeviceExtensions(); 718*8975f5c5SAndroid Build Coastguard Worker 719*8975f5c5SAndroid Build Coastguard Worker // Generate a vector of supported extension strings 720*8975f5c5SAndroid Build Coastguard Worker std::vector<std::string> getStrings() const; 721*8975f5c5SAndroid Build Coastguard Worker 722*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_device_d3d 723*8975f5c5SAndroid Build Coastguard Worker bool deviceD3D = false; 724*8975f5c5SAndroid Build Coastguard Worker 725*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_device_d3d9 726*8975f5c5SAndroid Build Coastguard Worker bool deviceD3D9 = false; 727*8975f5c5SAndroid Build Coastguard Worker 728*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_device_d3d11 729*8975f5c5SAndroid Build Coastguard Worker bool deviceD3D11 = false; 730*8975f5c5SAndroid Build Coastguard Worker 731*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_device_cgl 732*8975f5c5SAndroid Build Coastguard Worker bool deviceCGL = false; 733*8975f5c5SAndroid Build Coastguard Worker 734*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_device_metal 735*8975f5c5SAndroid Build Coastguard Worker bool deviceMetal = false; 736*8975f5c5SAndroid Build Coastguard Worker 737*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_device_vulkan 738*8975f5c5SAndroid Build Coastguard Worker bool deviceVulkan = false; 739*8975f5c5SAndroid Build Coastguard Worker 740*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_device_drm 741*8975f5c5SAndroid Build Coastguard Worker bool deviceDrmEXT = false; 742*8975f5c5SAndroid Build Coastguard Worker 743*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_device_drm_render_node 744*8975f5c5SAndroid Build Coastguard Worker bool deviceDrmRenderNodeEXT = false; 745*8975f5c5SAndroid Build Coastguard Worker }; 746*8975f5c5SAndroid Build Coastguard Worker 747*8975f5c5SAndroid Build Coastguard Worker struct ClientExtensions 748*8975f5c5SAndroid Build Coastguard Worker { 749*8975f5c5SAndroid Build Coastguard Worker ClientExtensions(); 750*8975f5c5SAndroid Build Coastguard Worker ClientExtensions(const ClientExtensions &other); 751*8975f5c5SAndroid Build Coastguard Worker 752*8975f5c5SAndroid Build Coastguard Worker // Generate a vector of supported extension strings 753*8975f5c5SAndroid Build Coastguard Worker std::vector<std::string> getStrings() const; 754*8975f5c5SAndroid Build Coastguard Worker 755*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_client_extensions 756*8975f5c5SAndroid Build Coastguard Worker bool clientExtensions = false; 757*8975f5c5SAndroid Build Coastguard Worker 758*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_platform_base 759*8975f5c5SAndroid Build Coastguard Worker bool platformBase = false; 760*8975f5c5SAndroid Build Coastguard Worker 761*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_platform_device 762*8975f5c5SAndroid Build Coastguard Worker bool platformDevice = false; 763*8975f5c5SAndroid Build Coastguard Worker 764*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_platform_gbm 765*8975f5c5SAndroid Build Coastguard Worker bool platformGbmKHR = false; 766*8975f5c5SAndroid Build Coastguard Worker 767*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_platform_wayland 768*8975f5c5SAndroid Build Coastguard Worker bool platformWaylandEXT = false; 769*8975f5c5SAndroid Build Coastguard Worker 770*8975f5c5SAndroid Build Coastguard Worker // EGL_MESA_platform_surfaceless 771*8975f5c5SAndroid Build Coastguard Worker bool platformSurfacelessMESA = false; 772*8975f5c5SAndroid Build Coastguard Worker 773*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle 774*8975f5c5SAndroid Build Coastguard Worker bool platformANGLE = false; 775*8975f5c5SAndroid Build Coastguard Worker 776*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_d3d 777*8975f5c5SAndroid Build Coastguard Worker bool platformANGLED3D = false; 778*8975f5c5SAndroid Build Coastguard Worker 779*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_d3d11on12 780*8975f5c5SAndroid Build Coastguard Worker bool platformANGLED3D11ON12 = false; 781*8975f5c5SAndroid Build Coastguard Worker 782*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_d3d_luid 783*8975f5c5SAndroid Build Coastguard Worker bool platformANGLED3DLUID = false; 784*8975f5c5SAndroid Build Coastguard Worker 785*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_opengl 786*8975f5c5SAndroid Build Coastguard Worker bool platformANGLEOpenGL = false; 787*8975f5c5SAndroid Build Coastguard Worker 788*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_null 789*8975f5c5SAndroid Build Coastguard Worker bool platformANGLENULL = false; 790*8975f5c5SAndroid Build Coastguard Worker 791*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_webgpu 792*8975f5c5SAndroid Build Coastguard Worker bool platformANGLEWebgpu = false; 793*8975f5c5SAndroid Build Coastguard Worker 794*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_vulkan 795*8975f5c5SAndroid Build Coastguard Worker bool platformANGLEVulkan = false; 796*8975f5c5SAndroid Build Coastguard Worker 797*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_metal 798*8975f5c5SAndroid Build Coastguard Worker bool platformANGLEMetal = false; 799*8975f5c5SAndroid Build Coastguard Worker 800*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_device_context_volatile_cgl 801*8975f5c5SAndroid Build Coastguard Worker bool platformANGLEDeviceContextVolatileCgl = false; 802*8975f5c5SAndroid Build Coastguard Worker 803*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_device_id 804*8975f5c5SAndroid Build Coastguard Worker bool platformANGLEDeviceId = false; 805*8975f5c5SAndroid Build Coastguard Worker 806*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_device_creation 807*8975f5c5SAndroid Build Coastguard Worker bool deviceCreation = false; 808*8975f5c5SAndroid Build Coastguard Worker 809*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_device_creation_d3d11 810*8975f5c5SAndroid Build Coastguard Worker bool deviceCreationD3D11 = false; 811*8975f5c5SAndroid Build Coastguard Worker 812*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_x11_visual 813*8975f5c5SAndroid Build Coastguard Worker bool x11Visual = false; 814*8975f5c5SAndroid Build Coastguard Worker 815*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_experimental_present_path 816*8975f5c5SAndroid Build Coastguard Worker bool experimentalPresentPath = false; 817*8975f5c5SAndroid Build Coastguard Worker 818*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_client_get_all_proc_addresses 819*8975f5c5SAndroid Build Coastguard Worker bool clientGetAllProcAddresses = false; 820*8975f5c5SAndroid Build Coastguard Worker 821*8975f5c5SAndroid Build Coastguard Worker // EGL_KHR_debug 822*8975f5c5SAndroid Build Coastguard Worker bool debug = false; 823*8975f5c5SAndroid Build Coastguard Worker 824*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_feature_control 825*8975f5c5SAndroid Build Coastguard Worker bool featureControlANGLE = false; 826*8975f5c5SAndroid Build Coastguard Worker 827*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_device_type_swiftshader 828*8975f5c5SAndroid Build Coastguard Worker bool platformANGLEDeviceTypeSwiftShader = false; 829*8975f5c5SAndroid Build Coastguard Worker 830*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_platform_angle_device_type_egl_angle 831*8975f5c5SAndroid Build Coastguard Worker bool platformANGLEDeviceTypeEGLANGLE = false; 832*8975f5c5SAndroid Build Coastguard Worker 833*8975f5c5SAndroid Build Coastguard Worker // EGL_EXT_device_query 834*8975f5c5SAndroid Build Coastguard Worker bool deviceQueryEXT = false; 835*8975f5c5SAndroid Build Coastguard Worker 836*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_display_power_preference 837*8975f5c5SAndroid Build Coastguard Worker bool displayPowerPreferenceANGLE = false; 838*8975f5c5SAndroid Build Coastguard Worker 839*8975f5c5SAndroid Build Coastguard Worker // EGL_ANGLE_no_error 840*8975f5c5SAndroid Build Coastguard Worker bool noErrorANGLE = false; 841*8975f5c5SAndroid Build Coastguard Worker }; 842*8975f5c5SAndroid Build Coastguard Worker 843*8975f5c5SAndroid Build Coastguard Worker } // namespace egl 844*8975f5c5SAndroid Build Coastguard Worker 845*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_CAPS_H_ 846