1*c8dee2aaSAndroid Build Coastguard Worker// This file specifies which functions should be attached to GrGLInterface 2*c8dee2aaSAndroid Build Coastguard Worker// for a given standard (OpenGL, OpenGL ES, etc). It allows specifing 3*c8dee2aaSAndroid Build Coastguard Worker// how and when to attach them (e.g. only if an extension is present). 4*c8dee2aaSAndroid Build Coastguard Worker// It is used for both the assemble and validate step. 5*c8dee2aaSAndroid Build Coastguard Worker// 6*c8dee2aaSAndroid Build Coastguard Worker// To regenerate the Assemble/Validate code after editing this file, execute: 7*c8dee2aaSAndroid Build Coastguard Worker// 8*c8dee2aaSAndroid Build Coastguard Worker// make -C tools/gpu/gl/interface generate 9*c8dee2aaSAndroid Build Coastguard Worker// 10*c8dee2aaSAndroid Build Coastguard Worker// Currently it assumes the minimum versions: 11*c8dee2aaSAndroid Build Coastguard Worker// - GL: 2.0 12*c8dee2aaSAndroid Build Coastguard Worker// - GLES: 2.0 13*c8dee2aaSAndroid Build Coastguard Worker// - WebGL: [WIP] 1.0 14*c8dee2aaSAndroid Build Coastguard Worker// 15*c8dee2aaSAndroid Build Coastguard Worker// http://web.eecs.umich.edu/~sugih/courses/eecs487/common/notes/APITables.xml 16*c8dee2aaSAndroid Build Coastguard Worker// is a handy reference comparing GL and GLES API 17*c8dee2aaSAndroid Build Coastguard Worker[ 18*c8dee2aaSAndroid Build Coastguard Worker { 19*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "<core>"}], 20*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "<core>"}], 21*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"ext": "<core>"}], 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 24*c8dee2aaSAndroid Build Coastguard Worker "ActiveTexture", "AttachShader", "BindAttribLocation", "BindBuffer", 25*c8dee2aaSAndroid Build Coastguard Worker "BindTexture", "BlendColor", "BlendEquation", "BlendFunc", 26*c8dee2aaSAndroid Build Coastguard Worker "BufferData", "BufferSubData", "Clear", "ClearColor", 27*c8dee2aaSAndroid Build Coastguard Worker "ClearStencil", "ColorMask", "CompileShader", "CompressedTexImage2D", 28*c8dee2aaSAndroid Build Coastguard Worker "CompressedTexSubImage2D", "CopyTexSubImage2D", "CreateProgram", "CreateShader", 29*c8dee2aaSAndroid Build Coastguard Worker "CullFace", "DeleteBuffers", "DeleteProgram", 30*c8dee2aaSAndroid Build Coastguard Worker "DeleteShader", "DeleteTextures", "DepthMask", "Disable", 31*c8dee2aaSAndroid Build Coastguard Worker "DisableVertexAttribArray", "DrawArrays", "DrawElements", "Enable", 32*c8dee2aaSAndroid Build Coastguard Worker "EnableVertexAttribArray", "Finish", "Flush", 33*c8dee2aaSAndroid Build Coastguard Worker "FrontFace", "GenBuffers", 34*c8dee2aaSAndroid Build Coastguard Worker "GenTextures", "GetBufferParameteriv", "GetError", 35*c8dee2aaSAndroid Build Coastguard Worker "GetFloatv", "GetIntegerv", "GetProgramInfoLog", 36*c8dee2aaSAndroid Build Coastguard Worker "GetProgramiv", "GetShaderInfoLog", 37*c8dee2aaSAndroid Build Coastguard Worker "GetShaderiv", "GetString", 38*c8dee2aaSAndroid Build Coastguard Worker "GetUniformLocation", "IsTexture", "LineWidth", "LinkProgram", "PixelStorei", 39*c8dee2aaSAndroid Build Coastguard Worker "ReadPixels", "Scissor", "ShaderSource", "StencilFunc", 40*c8dee2aaSAndroid Build Coastguard Worker "StencilFuncSeparate", "StencilMask", "StencilMaskSeparate", "StencilOp", 41*c8dee2aaSAndroid Build Coastguard Worker "StencilOpSeparate", "TexImage2D", "TexParameterf", "TexParameterfv", "TexParameteri", 42*c8dee2aaSAndroid Build Coastguard Worker "TexParameteriv", "TexSubImage2D", "Uniform1f", "Uniform1fv", "Uniform1i", "Uniform1iv", 43*c8dee2aaSAndroid Build Coastguard Worker "Uniform2f", "Uniform2fv", "Uniform2i", "Uniform2iv", "Uniform3f", "Uniform3fv", "Uniform3i", 44*c8dee2aaSAndroid Build Coastguard Worker "Uniform3iv", "Uniform4f", "Uniform4fv", "Uniform4i", "Uniform4iv", "UniformMatrix2fv", 45*c8dee2aaSAndroid Build Coastguard Worker "UniformMatrix3fv", "UniformMatrix4fv", "UseProgram", "VertexAttrib1f", 46*c8dee2aaSAndroid Build Coastguard Worker "VertexAttrib2fv", "VertexAttrib3fv", "VertexAttrib4fv", "VertexAttribPointer", 47*c8dee2aaSAndroid Build Coastguard Worker "Viewport", 48*c8dee2aaSAndroid Build Coastguard Worker ], 49*c8dee2aaSAndroid Build Coastguard Worker }, 50*c8dee2aaSAndroid Build Coastguard Worker { // GL exclusive core functions 51*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "<core>"}], 52*c8dee2aaSAndroid Build Coastguard Worker "GLES": null, 53*c8dee2aaSAndroid Build Coastguard Worker 54*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 55*c8dee2aaSAndroid Build Coastguard Worker "DrawBuffer", "PolygonMode", 56*c8dee2aaSAndroid Build Coastguard Worker ], 57*c8dee2aaSAndroid Build Coastguard Worker }, 58*c8dee2aaSAndroid Build Coastguard Worker { 59*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 0], "ext": "<core>"}], 60*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}], 61*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 62*c8dee2aaSAndroid Build Coastguard Worker 63*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 64*c8dee2aaSAndroid Build Coastguard Worker "GetStringi", 65*c8dee2aaSAndroid Build Coastguard Worker ] 66*c8dee2aaSAndroid Build Coastguard Worker }, 67*c8dee2aaSAndroid Build Coastguard Worker { 68*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 2], "ext": "<core>"}], 69*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 1], "ext": "<core>"}], 70*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 71*c8dee2aaSAndroid Build Coastguard Worker 72*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 73*c8dee2aaSAndroid Build Coastguard Worker "MemoryBarrier", 74*c8dee2aaSAndroid Build Coastguard Worker ], 75*c8dee2aaSAndroid Build Coastguard Worker // TODO: Remove 'optional' once Chrome sets this function in the interface. 76*c8dee2aaSAndroid Build Coastguard Worker "optional": [ 77*c8dee2aaSAndroid Build Coastguard Worker "MemoryBarrier", 78*c8dee2aaSAndroid Build Coastguard Worker ] 79*c8dee2aaSAndroid Build Coastguard Worker }, 80*c8dee2aaSAndroid Build Coastguard Worker 81*c8dee2aaSAndroid Build Coastguard Worker { 82*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 0], "ext": "<core>"}, 83*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_vertex_array_object"}, 84*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_APPLE_vertex_array_object"}], 85*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 86*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_OES_vertex_array_object"}], 87*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}, 88*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_OES_vertex_array_object"}, 89*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "OES_vertex_array_object"}], 90*c8dee2aaSAndroid Build Coastguard Worker 91*c8dee2aaSAndroid Build Coastguard Worker // WebGL uses createVertexArray instead of genVertexArrays, but Emscripten 92*c8dee2aaSAndroid Build Coastguard Worker // creates an alias called genVertexArray which papers over this difference. 93*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 94*c8dee2aaSAndroid Build Coastguard Worker "BindVertexArray", "DeleteVertexArrays", "GenVertexArrays", 95*c8dee2aaSAndroid Build Coastguard Worker ], 96*c8dee2aaSAndroid Build Coastguard Worker }, 97*c8dee2aaSAndroid Build Coastguard Worker 98*c8dee2aaSAndroid Build Coastguard Worker { 99*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 0], "ext": "<core>"}, 100*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_tessellation_shader"}], 101*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 2], "ext": "<core>"}, 102*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_OES_tessellation_shader"}], 103*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 104*c8dee2aaSAndroid Build Coastguard Worker 105*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 106*c8dee2aaSAndroid Build Coastguard Worker "PatchParameteri", 107*c8dee2aaSAndroid Build Coastguard Worker ], 108*c8dee2aaSAndroid Build Coastguard Worker }, 109*c8dee2aaSAndroid Build Coastguard Worker 110*c8dee2aaSAndroid Build Coastguard Worker { 111*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 0], "ext": "<core>"}], 112*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "GL_EXT_blend_func_extended"}], 113*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 114*c8dee2aaSAndroid Build Coastguard Worker 115*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 116*c8dee2aaSAndroid Build Coastguard Worker "BindFragDataLocation", 117*c8dee2aaSAndroid Build Coastguard Worker ], 118*c8dee2aaSAndroid Build Coastguard Worker }, 119*c8dee2aaSAndroid Build Coastguard Worker { 120*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 3], "ext": "<core>"}, 121*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_blend_func_extended"}], 122*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "GL_EXT_blend_func_extended"}], 123*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 124*c8dee2aaSAndroid Build Coastguard Worker 125*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 126*c8dee2aaSAndroid Build Coastguard Worker "BindFragDataLocationIndexed", 127*c8dee2aaSAndroid Build Coastguard Worker ], 128*c8dee2aaSAndroid Build Coastguard Worker }, 129*c8dee2aaSAndroid Build Coastguard Worker 130*c8dee2aaSAndroid Build Coastguard Worker { 131*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "GL_KHR_blend_equation_advanced"}, 132*c8dee2aaSAndroid Build Coastguard Worker {"ext": "GL_NV_blend_equation_advanced"}], 133*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_KHR_blend_equation_advanced"}, 134*c8dee2aaSAndroid Build Coastguard Worker {"ext": "GL_NV_blend_equation_advanced"}], 135*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 136*c8dee2aaSAndroid Build Coastguard Worker 137*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 138*c8dee2aaSAndroid Build Coastguard Worker "BlendBarrier", 139*c8dee2aaSAndroid Build Coastguard Worker ], 140*c8dee2aaSAndroid Build Coastguard Worker }, 141*c8dee2aaSAndroid Build Coastguard Worker 142*c8dee2aaSAndroid Build Coastguard Worker { 143*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 4], "ext": "<core>"}, 144*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_clear_texture"}], 145*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_EXT_clear_texture", "suffix": "EXT"}], 146*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 147*c8dee2aaSAndroid Build Coastguard Worker 148*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 149*c8dee2aaSAndroid Build Coastguard Worker "ClearTexImage", "ClearTexSubImage", 150*c8dee2aaSAndroid Build Coastguard Worker ], 151*c8dee2aaSAndroid Build Coastguard Worker // https://bugs.chromium.org/p/skia/issues/detail?id=8913 152*c8dee2aaSAndroid Build Coastguard Worker "optional": [ 153*c8dee2aaSAndroid Build Coastguard Worker "ClearTexImage", "ClearTexSubImage", 154*c8dee2aaSAndroid Build Coastguard Worker ] 155*c8dee2aaSAndroid Build Coastguard Worker }, 156*c8dee2aaSAndroid Build Coastguard Worker 157*c8dee2aaSAndroid Build Coastguard Worker { 158*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 1], "ext": "<core>"}, 159*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_draw_instanced"}, 160*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_draw_instanced"}], 161*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 162*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_draw_instanced"}, 163*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ANGLE_instanced_arrays"}], 164*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 165*c8dee2aaSAndroid Build Coastguard Worker 166*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 167*c8dee2aaSAndroid Build Coastguard Worker "DrawArraysInstanced", "DrawElementsInstanced", 168*c8dee2aaSAndroid Build Coastguard Worker ] 169*c8dee2aaSAndroid Build Coastguard Worker }, 170*c8dee2aaSAndroid Build Coastguard Worker 171*c8dee2aaSAndroid Build Coastguard Worker { 172*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 2], "ext": "<core>"}, 173*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_base_instance"}], 174*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_EXT_base_instance"}, 175*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ANGLE_base_vertex_base_instance"}], 176*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"ext": "GL_WEBGL_draw_instanced_base_vertex_base_instance"}], 177*c8dee2aaSAndroid Build Coastguard Worker 178*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 179*c8dee2aaSAndroid Build Coastguard Worker "DrawArraysInstancedBaseInstance", "DrawElementsInstancedBaseVertexBaseInstance" 180*c8dee2aaSAndroid Build Coastguard Worker ] 181*c8dee2aaSAndroid Build Coastguard Worker }, 182*c8dee2aaSAndroid Build Coastguard Worker 183*c8dee2aaSAndroid Build Coastguard Worker { // ES 3.0 has glDrawBuffers but not glDrawBuffer 184*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "<core>"}], 185*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}], 186*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 187*c8dee2aaSAndroid Build Coastguard Worker 188*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 189*c8dee2aaSAndroid Build Coastguard Worker "DrawBuffers", "ReadBuffer", 190*c8dee2aaSAndroid Build Coastguard Worker ] 191*c8dee2aaSAndroid Build Coastguard Worker }, 192*c8dee2aaSAndroid Build Coastguard Worker 193*c8dee2aaSAndroid Build Coastguard Worker { 194*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 0], "ext": "<core>"}, 195*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_draw_indirect"}], 196*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 1], "ext": "<core>"}], 197*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 198*c8dee2aaSAndroid Build Coastguard Worker 199*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 200*c8dee2aaSAndroid Build Coastguard Worker "DrawArraysIndirect", "DrawElementsIndirect", 201*c8dee2aaSAndroid Build Coastguard Worker ] 202*c8dee2aaSAndroid Build Coastguard Worker }, 203*c8dee2aaSAndroid Build Coastguard Worker 204*c8dee2aaSAndroid Build Coastguard Worker { 205*c8dee2aaSAndroid Build Coastguard Worker "GL": null, 206*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_ANGLE_base_vertex_base_instance"}], 207*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"ext": "GL_WEBGL_multi_draw_instanced_base_vertex_base_instance"}], 208*c8dee2aaSAndroid Build Coastguard Worker 209*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 210*c8dee2aaSAndroid Build Coastguard Worker "MultiDrawArraysInstancedBaseInstance", "MultiDrawElementsInstancedBaseVertexBaseInstance", 211*c8dee2aaSAndroid Build Coastguard Worker ] 212*c8dee2aaSAndroid Build Coastguard Worker }, 213*c8dee2aaSAndroid Build Coastguard Worker 214*c8dee2aaSAndroid Build Coastguard Worker { // glDrawRangeElements was added to ES in 3.0. 215*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "<core>"}], 216*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}], 217*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 218*c8dee2aaSAndroid Build Coastguard Worker 219*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 220*c8dee2aaSAndroid Build Coastguard Worker "DrawRangeElements", 221*c8dee2aaSAndroid Build Coastguard Worker ] 222*c8dee2aaSAndroid Build Coastguard Worker }, 223*c8dee2aaSAndroid Build Coastguard Worker 224*c8dee2aaSAndroid Build Coastguard Worker { 225*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 2], "ext": "<core>"}, 226*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_texture_multisample"}], 227*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 1], "ext": "<core>"}], 228*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 229*c8dee2aaSAndroid Build Coastguard Worker 230*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 231*c8dee2aaSAndroid Build Coastguard Worker "GetMultisamplefv", 232*c8dee2aaSAndroid Build Coastguard Worker ] 233*c8dee2aaSAndroid Build Coastguard Worker }, 234*c8dee2aaSAndroid Build Coastguard Worker 235*c8dee2aaSAndroid Build Coastguard Worker // glGetTexLevelParameteriv was added to ES in 3.1. 236*c8dee2aaSAndroid Build Coastguard Worker { 237*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "<core>"}], 238*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 1], "ext": "<core>"}], 239*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 240*c8dee2aaSAndroid Build Coastguard Worker 241*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 242*c8dee2aaSAndroid Build Coastguard Worker "GetTexLevelParameteriv", 243*c8dee2aaSAndroid Build Coastguard Worker ] 244*c8dee2aaSAndroid Build Coastguard Worker }, 245*c8dee2aaSAndroid Build Coastguard Worker 246*c8dee2aaSAndroid Build Coastguard Worker { 247*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 3], "ext": "<core>"}, 248*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_multi_draw_indirect"}], 249*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_EXT_multi_draw_indirect"}], 250*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 251*c8dee2aaSAndroid Build Coastguard Worker 252*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 253*c8dee2aaSAndroid Build Coastguard Worker "MultiDrawArraysIndirect", "MultiDrawElementsIndirect", 254*c8dee2aaSAndroid Build Coastguard Worker ] 255*c8dee2aaSAndroid Build Coastguard Worker }, 256*c8dee2aaSAndroid Build Coastguard Worker 257*c8dee2aaSAndroid Build Coastguard Worker { 258*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 1], "ext": "<core>"}], 259*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 2], "ext": "<core>"}, 260*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_OES_texture_buffer"}, 261*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_texture_buffer"}], 262*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 263*c8dee2aaSAndroid Build Coastguard Worker 264*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 265*c8dee2aaSAndroid Build Coastguard Worker "TexBuffer", 266*c8dee2aaSAndroid Build Coastguard Worker ] 267*c8dee2aaSAndroid Build Coastguard Worker }, 268*c8dee2aaSAndroid Build Coastguard Worker { 269*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 3], "ext": "<core>"}], 270*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 2], "ext": "<core>"}, 271*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_OES_texture_buffer"}, 272*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_texture_buffer"}], 273*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 274*c8dee2aaSAndroid Build Coastguard Worker 275*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 276*c8dee2aaSAndroid Build Coastguard Worker "TexBufferRange", 277*c8dee2aaSAndroid Build Coastguard Worker ] 278*c8dee2aaSAndroid Build Coastguard Worker }, 279*c8dee2aaSAndroid Build Coastguard Worker 280*c8dee2aaSAndroid Build Coastguard Worker // GL_EXT_texture_storage is part of desktop 4.2 281*c8dee2aaSAndroid Build Coastguard Worker // There is a desktop ARB extension and an ES+desktop EXT extension 282*c8dee2aaSAndroid Build Coastguard Worker { 283*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 2], "ext": "<core>"}, 284*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_texture_storage"}, 285*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_texture_storage"}], 286*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 287*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_texture_storage"}], 288*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 289*c8dee2aaSAndroid Build Coastguard Worker 290*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 291*c8dee2aaSAndroid Build Coastguard Worker "TexStorage2D", 292*c8dee2aaSAndroid Build Coastguard Worker ] 293*c8dee2aaSAndroid Build Coastguard Worker }, 294*c8dee2aaSAndroid Build Coastguard Worker 295*c8dee2aaSAndroid Build Coastguard Worker // glTextureBarrier is part of desktop 4.5. There are also ARB and NV extensions. 296*c8dee2aaSAndroid Build Coastguard Worker { 297*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 5], "ext": "<core>"}, 298*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_texture_barrier"}, 299*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_NV_texture_barrier"}], 300*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_NV_texture_barrier"}], 301*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 302*c8dee2aaSAndroid Build Coastguard Worker 303*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 304*c8dee2aaSAndroid Build Coastguard Worker "TextureBarrier", 305*c8dee2aaSAndroid Build Coastguard Worker ] 306*c8dee2aaSAndroid Build Coastguard Worker }, 307*c8dee2aaSAndroid Build Coastguard Worker 308*c8dee2aaSAndroid Build Coastguard Worker { 309*c8dee2aaSAndroid Build Coastguard Worker "GL": null, // Not supported 310*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_EXT_discard_framebuffer"}], 311*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 312*c8dee2aaSAndroid Build Coastguard Worker 313*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 314*c8dee2aaSAndroid Build Coastguard Worker "DiscardFramebuffer", 315*c8dee2aaSAndroid Build Coastguard Worker ] 316*c8dee2aaSAndroid Build Coastguard Worker }, 317*c8dee2aaSAndroid Build Coastguard Worker 318*c8dee2aaSAndroid Build Coastguard Worker { 319*c8dee2aaSAndroid Build Coastguard Worker "GL": null, // Not supported 320*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_QCOM_tiled_rendering"}], 321*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 322*c8dee2aaSAndroid Build Coastguard Worker 323*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 324*c8dee2aaSAndroid Build Coastguard Worker "StartTiling", "EndTiling", 325*c8dee2aaSAndroid Build Coastguard Worker ], 326*c8dee2aaSAndroid Build Coastguard Worker // https://github.com/flutter/flutter/issues/47164 327*c8dee2aaSAndroid Build Coastguard Worker // https://github.com/flutter/flutter/issues/47804 328*c8dee2aaSAndroid Build Coastguard Worker "optional": [ 329*c8dee2aaSAndroid Build Coastguard Worker "StartTiling", "EndTiling", 330*c8dee2aaSAndroid Build Coastguard Worker ] 331*c8dee2aaSAndroid Build Coastguard Worker }, 332*c8dee2aaSAndroid Build Coastguard Worker 333*c8dee2aaSAndroid Build Coastguard Worker { 334*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 2], "ext": "<core>"}, 335*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_instanced_arrays"}], 336*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 337*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_instanced_arrays"}, 338*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ANGLE_instanced_arrays"}], 339*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 340*c8dee2aaSAndroid Build Coastguard Worker 341*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 342*c8dee2aaSAndroid Build Coastguard Worker "VertexAttribDivisor", 343*c8dee2aaSAndroid Build Coastguard Worker ] 344*c8dee2aaSAndroid Build Coastguard Worker }, 345*c8dee2aaSAndroid Build Coastguard Worker { 346*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 0], "ext": "<core>"}], 347*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}], 348*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 349*c8dee2aaSAndroid Build Coastguard Worker 350*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 351*c8dee2aaSAndroid Build Coastguard Worker "VertexAttribIPointer", 352*c8dee2aaSAndroid Build Coastguard Worker ] 353*c8dee2aaSAndroid Build Coastguard Worker }, 354*c8dee2aaSAndroid Build Coastguard Worker 355*c8dee2aaSAndroid Build Coastguard Worker // FrameBuffer Object (FBO) related calls 356*c8dee2aaSAndroid Build Coastguard Worker { 357*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 0], "ext": "<core>"}, 358*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_framebuffer_object"}, 359*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_framebuffer_object"}], 360*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "<core>"}], // These are all in ES 2.0 and above 361*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"ext": "<core>"}], 362*c8dee2aaSAndroid Build Coastguard Worker 363*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 364*c8dee2aaSAndroid Build Coastguard Worker "BindFramebuffer", "BindRenderbuffer", "CheckFramebufferStatus", 365*c8dee2aaSAndroid Build Coastguard Worker "DeleteFramebuffers", "DeleteRenderbuffers", "FramebufferRenderbuffer", 366*c8dee2aaSAndroid Build Coastguard Worker "FramebufferTexture2D", "GenFramebuffers", "GenRenderbuffers", "GenerateMipmap", 367*c8dee2aaSAndroid Build Coastguard Worker "GetFramebufferAttachmentParameteriv", "GetRenderbufferParameteriv", 368*c8dee2aaSAndroid Build Coastguard Worker "RenderbufferStorage", 369*c8dee2aaSAndroid Build Coastguard Worker ], 370*c8dee2aaSAndroid Build Coastguard Worker }, 371*c8dee2aaSAndroid Build Coastguard Worker { 372*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 0], "ext": "<core>"}, 373*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_framebuffer_object"}, 374*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_framebuffer_blit"}], 375*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 376*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_NV_framebuffer_blit"}, 377*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_CHROMIUM_framebuffer_multisample"}, 378*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ANGLE_framebuffer_blit"}], 379*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 380*c8dee2aaSAndroid Build Coastguard Worker 381*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 382*c8dee2aaSAndroid Build Coastguard Worker "BlitFramebuffer", 383*c8dee2aaSAndroid Build Coastguard Worker ], 384*c8dee2aaSAndroid Build Coastguard Worker }, 385*c8dee2aaSAndroid Build Coastguard Worker { 386*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 0], "ext": "<core>"}, 387*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_framebuffer_object"}, 388*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_framebuffer_multisample"}], 389*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 390*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_CHROMIUM_framebuffer_multisample"}, 391*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ANGLE_framebuffer_multisample"}], 392*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 393*c8dee2aaSAndroid Build Coastguard Worker 394*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 395*c8dee2aaSAndroid Build Coastguard Worker "RenderbufferStorageMultisample", 396*c8dee2aaSAndroid Build Coastguard Worker ], 397*c8dee2aaSAndroid Build Coastguard Worker }, 398*c8dee2aaSAndroid Build Coastguard Worker 399*c8dee2aaSAndroid Build Coastguard Worker { 400*c8dee2aaSAndroid Build Coastguard Worker "GL": null, 401*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_CHROMIUM_map_sub"}], 402*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 403*c8dee2aaSAndroid Build Coastguard Worker 404*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 405*c8dee2aaSAndroid Build Coastguard Worker "MapBufferSubData", "MapTexSubImage2D", "UnmapBufferSubData", 406*c8dee2aaSAndroid Build Coastguard Worker "UnmapTexSubImage2D" 407*c8dee2aaSAndroid Build Coastguard Worker ], 408*c8dee2aaSAndroid Build Coastguard Worker }, 409*c8dee2aaSAndroid Build Coastguard Worker 410*c8dee2aaSAndroid Build Coastguard Worker { 411*c8dee2aaSAndroid Build Coastguard Worker "GL": null, 412*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_EXT_multisampled_render_to_texture"}, 413*c8dee2aaSAndroid Build Coastguard Worker {"ext": "GL_IMG_multisampled_render_to_texture"}], 414*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 415*c8dee2aaSAndroid Build Coastguard Worker 416*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 417*c8dee2aaSAndroid Build Coastguard Worker "FramebufferTexture2DMultisample", 418*c8dee2aaSAndroid Build Coastguard Worker ], 419*c8dee2aaSAndroid Build Coastguard Worker }, 420*c8dee2aaSAndroid Build Coastguard Worker { 421*c8dee2aaSAndroid Build Coastguard Worker "GL": null, 422*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_EXT_multisampled_render_to_texture"}], 423*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 424*c8dee2aaSAndroid Build Coastguard Worker 425*c8dee2aaSAndroid Build Coastguard Worker "hardcode_functions" : [ 426*c8dee2aaSAndroid Build Coastguard Worker { 427*c8dee2aaSAndroid Build Coastguard Worker "ptr_name": "fRenderbufferStorageMultisampleES2EXT", 428*c8dee2aaSAndroid Build Coastguard Worker "cast_name": "GrGLRenderbufferStorageMultisampleFn", 429*c8dee2aaSAndroid Build Coastguard Worker "get_name": "glRenderbufferStorageMultisampleEXT", 430*c8dee2aaSAndroid Build Coastguard Worker } 431*c8dee2aaSAndroid Build Coastguard Worker ] 432*c8dee2aaSAndroid Build Coastguard Worker }, 433*c8dee2aaSAndroid Build Coastguard Worker { 434*c8dee2aaSAndroid Build Coastguard Worker "GL": null, 435*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_IMG_multisampled_render_to_texture"}], 436*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 437*c8dee2aaSAndroid Build Coastguard Worker 438*c8dee2aaSAndroid Build Coastguard Worker "hardcode_functions" : [ 439*c8dee2aaSAndroid Build Coastguard Worker { 440*c8dee2aaSAndroid Build Coastguard Worker "ptr_name": "fRenderbufferStorageMultisampleES2EXT", 441*c8dee2aaSAndroid Build Coastguard Worker "cast_name": "GrGLRenderbufferStorageMultisampleFn", 442*c8dee2aaSAndroid Build Coastguard Worker "get_name": "glRenderbufferStorageMultisampleIMG", 443*c8dee2aaSAndroid Build Coastguard Worker } 444*c8dee2aaSAndroid Build Coastguard Worker ] 445*c8dee2aaSAndroid Build Coastguard Worker }, 446*c8dee2aaSAndroid Build Coastguard Worker { 447*c8dee2aaSAndroid Build Coastguard Worker "GL": null, 448*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_APPLE_framebuffer_multisample"}], 449*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 450*c8dee2aaSAndroid Build Coastguard Worker 451*c8dee2aaSAndroid Build Coastguard Worker "functions" : ["ResolveMultisampleFramebuffer"], 452*c8dee2aaSAndroid Build Coastguard Worker "hardcode_functions" : [ 453*c8dee2aaSAndroid Build Coastguard Worker { 454*c8dee2aaSAndroid Build Coastguard Worker "ptr_name": "fRenderbufferStorageMultisampleES2APPLE", 455*c8dee2aaSAndroid Build Coastguard Worker "cast_name": "GrGLRenderbufferStorageMultisampleFn", 456*c8dee2aaSAndroid Build Coastguard Worker "get_name": "glRenderbufferStorageMultisampleAPPLE", 457*c8dee2aaSAndroid Build Coastguard Worker } 458*c8dee2aaSAndroid Build Coastguard Worker ] 459*c8dee2aaSAndroid Build Coastguard Worker }, 460*c8dee2aaSAndroid Build Coastguard Worker 461*c8dee2aaSAndroid Build Coastguard Worker // There are several APIs for buffer mapping: 462*c8dee2aaSAndroid Build Coastguard Worker // ES2 + GL_OES_mapbuffer: MapBufferOES and UnmapBufferOES 463*c8dee2aaSAndroid Build Coastguard Worker // ES2 + GL_EXT_map_buffer_range: Adds MapBufferRangeEXT and FlushMappedBufferRangeEXT 464*c8dee2aaSAndroid Build Coastguard Worker // ES3: MapBufferRange, FlushMappedBufferRange, and UnmapBuffer are core (so no suffix). 465*c8dee2aaSAndroid Build Coastguard Worker // 466*c8dee2aaSAndroid Build Coastguard Worker // MapBuffer is not part of ES3, but implementations may still report the OES versions of 467*c8dee2aaSAndroid Build Coastguard Worker // MapBuffer and UnmapBuffer, per the older GL_OES_mapbuffer extension. Some implementations 468*c8dee2aaSAndroid Build Coastguard Worker // let us mix the newer MapBufferRange with the older UnmapBufferOES, but we've hit others that 469*c8dee2aaSAndroid Build Coastguard Worker // don't permit it. Note that in GrGLBuffer, we choose which API to use based on version and 470*c8dee2aaSAndroid Build Coastguard Worker // extensions. This code is written so that we never mix OES and non-OES functions. 471*c8dee2aaSAndroid Build Coastguard Worker { 472*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "<core>"}], 473*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_OES_mapbuffer"}], 474*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 475*c8dee2aaSAndroid Build Coastguard Worker 476*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 477*c8dee2aaSAndroid Build Coastguard Worker "MapBuffer", 478*c8dee2aaSAndroid Build Coastguard Worker ], 479*c8dee2aaSAndroid Build Coastguard Worker }, 480*c8dee2aaSAndroid Build Coastguard Worker { 481*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "<core>"}], 482*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 483*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_OES_mapbuffer"}], 484*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, // explicitly removed https://www.khronos.org/registry/webgl/specs/2.0/#5.14 485*c8dee2aaSAndroid Build Coastguard Worker 486*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 487*c8dee2aaSAndroid Build Coastguard Worker "UnmapBuffer", 488*c8dee2aaSAndroid Build Coastguard Worker ], 489*c8dee2aaSAndroid Build Coastguard Worker }, 490*c8dee2aaSAndroid Build Coastguard Worker { 491*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 0], "ext": "<core>"}, 492*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_map_buffer_range"}], 493*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 494*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_map_buffer_range"}], 495*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, // explicitly removed https://www.khronos.org/registry/webgl/specs/2.0/#5.14 496*c8dee2aaSAndroid Build Coastguard Worker 497*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 498*c8dee2aaSAndroid Build Coastguard Worker // These functions are added to the 3.0 version of both GLES and GL. 499*c8dee2aaSAndroid Build Coastguard Worker "MapBufferRange", "FlushMappedBufferRange", 500*c8dee2aaSAndroid Build Coastguard Worker ], 501*c8dee2aaSAndroid Build Coastguard Worker }, 502*c8dee2aaSAndroid Build Coastguard Worker 503*c8dee2aaSAndroid Build Coastguard Worker { 504*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "GL_EXT_debug_marker"}], 505*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_EXT_debug_marker"}], 506*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 507*c8dee2aaSAndroid Build Coastguard Worker 508*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 509*c8dee2aaSAndroid Build Coastguard Worker "InsertEventMarker", "PushGroupMarker", "PopGroupMarker" 510*c8dee2aaSAndroid Build Coastguard Worker ], 511*c8dee2aaSAndroid Build Coastguard Worker }, 512*c8dee2aaSAndroid Build Coastguard Worker 513*c8dee2aaSAndroid Build Coastguard Worker { 514*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 1], "ext": "<core>"}, 515*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_copy_buffer"}], 516*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 517*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_NV_copy_buffer"}], 518*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"},], 519*c8dee2aaSAndroid Build Coastguard Worker 520*c8dee2aaSAndroid Build Coastguard Worker "functions": ["CopyBufferSubData",], 521*c8dee2aaSAndroid Build Coastguard Worker }, 522*c8dee2aaSAndroid Build Coastguard Worker 523*c8dee2aaSAndroid Build Coastguard Worker { 524*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 3], "ext": "<core>"}, 525*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_KHR_debug", "suffix": ""}], 526*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_KHR_debug"}], 527*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 528*c8dee2aaSAndroid Build Coastguard Worker 529*c8dee2aaSAndroid Build Coastguard Worker // In OpenGL (but not ES), KHR_debug defines these methods to have no suffix. 530*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 531*c8dee2aaSAndroid Build Coastguard Worker "DebugMessageControl", "DebugMessageInsert", "DebugMessageCallback", 532*c8dee2aaSAndroid Build Coastguard Worker "GetDebugMessageLog", "PushDebugGroup", "PopDebugGroup", "ObjectLabel", 533*c8dee2aaSAndroid Build Coastguard Worker ], 534*c8dee2aaSAndroid Build Coastguard Worker }, 535*c8dee2aaSAndroid Build Coastguard Worker 536*c8dee2aaSAndroid Build Coastguard Worker { 537*c8dee2aaSAndroid Build Coastguard Worker "GL": null, 538*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_CHROMIUM_bind_uniform_location"}], 539*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 540*c8dee2aaSAndroid Build Coastguard Worker 541*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 542*c8dee2aaSAndroid Build Coastguard Worker "BindUniformLocation", 543*c8dee2aaSAndroid Build Coastguard Worker ], 544*c8dee2aaSAndroid Build Coastguard Worker }, 545*c8dee2aaSAndroid Build Coastguard Worker 546*c8dee2aaSAndroid Build Coastguard Worker { 547*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "GL_EXT_window_rectangles"}], 548*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_EXT_window_rectangles"}], 549*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 550*c8dee2aaSAndroid Build Coastguard Worker 551*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 552*c8dee2aaSAndroid Build Coastguard Worker "WindowRectangles", 553*c8dee2aaSAndroid Build Coastguard Worker ], 554*c8dee2aaSAndroid Build Coastguard Worker }, 555*c8dee2aaSAndroid Build Coastguard Worker 556*c8dee2aaSAndroid Build Coastguard Worker { 557*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 2], "ext": "<core>"}, 558*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_sync"}], 559*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 560*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_APPLE_sync"}], 561*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 562*c8dee2aaSAndroid Build Coastguard Worker 563*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 564*c8dee2aaSAndroid Build Coastguard Worker "ClientWaitSync", "DeleteSync", "FenceSync", 565*c8dee2aaSAndroid Build Coastguard Worker "IsSync", "WaitSync" 566*c8dee2aaSAndroid Build Coastguard Worker ], 567*c8dee2aaSAndroid Build Coastguard Worker }, 568*c8dee2aaSAndroid Build Coastguard Worker 569*c8dee2aaSAndroid Build Coastguard Worker { // getInternalformativ was added in GL 4.2, ES 3.0, and with 570*c8dee2aaSAndroid Build Coastguard Worker // extension ARB_internalformat_query 571*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 2], "ext": "<core>"}, 572*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_internalformat_query"}], 573*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}], 574*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 575*c8dee2aaSAndroid Build Coastguard Worker 576*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 577*c8dee2aaSAndroid Build Coastguard Worker "GetInternalformativ" 578*c8dee2aaSAndroid Build Coastguard Worker ], 579*c8dee2aaSAndroid Build Coastguard Worker }, 580*c8dee2aaSAndroid Build Coastguard Worker 581*c8dee2aaSAndroid Build Coastguard Worker // GetProgramBinary and ProgramBinary are available with an ES2 extension... 582*c8dee2aaSAndroid Build Coastguard Worker { 583*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 1], "ext": "<core>"}], 584*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 585*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_OES_get_program_binary"}], 586*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, // explicitly not supported in WebGL 2.0 587*c8dee2aaSAndroid Build Coastguard Worker 588*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 589*c8dee2aaSAndroid Build Coastguard Worker "GetProgramBinary", "ProgramBinary", 590*c8dee2aaSAndroid Build Coastguard Worker ], 591*c8dee2aaSAndroid Build Coastguard Worker }, 592*c8dee2aaSAndroid Build Coastguard Worker 593*c8dee2aaSAndroid Build Coastguard Worker // ... but the related ProgramParameteri is only in ES3 594*c8dee2aaSAndroid Build Coastguard Worker { 595*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 1], "ext": "<core>"}], 596*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}], 597*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, // explicitly not supported in WebGL 2.0 598*c8dee2aaSAndroid Build Coastguard Worker 599*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 600*c8dee2aaSAndroid Build Coastguard Worker "ProgramParameteri", 601*c8dee2aaSAndroid Build Coastguard Worker ], 602*c8dee2aaSAndroid Build Coastguard Worker }, 603*c8dee2aaSAndroid Build Coastguard Worker 604*c8dee2aaSAndroid Build Coastguard Worker { 605*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 2], "ext": "<core>"}, 606*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_sampler_objects"}], 607*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}], 608*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 609*c8dee2aaSAndroid Build Coastguard Worker 610*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 611*c8dee2aaSAndroid Build Coastguard Worker "BindSampler", "DeleteSamplers", "GenSamplers", 612*c8dee2aaSAndroid Build Coastguard Worker "SamplerParameterf", "SamplerParameteri", "SamplerParameteriv", 613*c8dee2aaSAndroid Build Coastguard Worker ], 614*c8dee2aaSAndroid Build Coastguard Worker }, 615*c8dee2aaSAndroid Build Coastguard Worker 616*c8dee2aaSAndroid Build Coastguard Worker { 617*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "<core>"}], 618*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 619*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_disjoint_timer_query"}], 620*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}, 621*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_disjoint_timer_query"}, 622*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "EXT_disjoint_timer_query"}], 623*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 624*c8dee2aaSAndroid Build Coastguard Worker "GenQueries", "DeleteQueries", "BeginQuery", "EndQuery", 625*c8dee2aaSAndroid Build Coastguard Worker "GetQueryObjectuiv", "GetQueryiv", 626*c8dee2aaSAndroid Build Coastguard Worker ] 627*c8dee2aaSAndroid Build Coastguard Worker }, 628*c8dee2aaSAndroid Build Coastguard Worker { 629*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 3], "ext": "<core>"}, 630*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_timer_query"}], 631*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_EXT_disjoint_timer_query"}], 632*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"ext": "GL_EXT_disjoint_timer_query"}, 633*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "EXT_disjoint_timer_query"}, 634*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_disjoint_timer_query_webgl2"}, 635*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "EXT_disjoint_timer_query_webgl2"}], 636*c8dee2aaSAndroid Build Coastguard Worker 637*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 638*c8dee2aaSAndroid Build Coastguard Worker "QueryCounter", 639*c8dee2aaSAndroid Build Coastguard Worker ], 640*c8dee2aaSAndroid Build Coastguard Worker }, 641*c8dee2aaSAndroid Build Coastguard Worker 642*c8dee2aaSAndroid Build Coastguard Worker { 643*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [3, 3], "ext": "<core>"}, 644*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_timer_query"}, 645*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_timer_query"}], 646*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_EXT_disjoint_timer_query"},], 647*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"ext": "GL_EXT_disjoint_timer_query"}, 648*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "EXT_disjoint_timer_query"}, 649*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_EXT_disjoint_timer_query_webgl2"}, 650*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "EXT_disjoint_timer_query_webgl2"}], 651*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 652*c8dee2aaSAndroid Build Coastguard Worker "GetQueryObjecti64v", "GetQueryObjectui64v", 653*c8dee2aaSAndroid Build Coastguard Worker ], 654*c8dee2aaSAndroid Build Coastguard Worker }, 655*c8dee2aaSAndroid Build Coastguard Worker 656*c8dee2aaSAndroid Build Coastguard Worker { 657*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 3], "ext": "<core>"}, 658*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_invalidate_subdata"}], 659*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_ARB_invalidate_subdata"}], 660*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 661*c8dee2aaSAndroid Build Coastguard Worker 662*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 663*c8dee2aaSAndroid Build Coastguard Worker "InvalidateBufferData", "InvalidateBufferSubData", "InvalidateTexImage", 664*c8dee2aaSAndroid Build Coastguard Worker "InvalidateTexSubImage", 665*c8dee2aaSAndroid Build Coastguard Worker ], 666*c8dee2aaSAndroid Build Coastguard Worker }, 667*c8dee2aaSAndroid Build Coastguard Worker { // ES 3.0 adds the framebuffer functions but not the others. 668*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 3], "ext": "<core>"}, 669*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_invalidate_subdata"}], 670*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"min_version": [3, 0], "ext": "<core>"}, 671*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_invalidate_subdata"}], 672*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"min_version": [2, 0], "ext": "<core>"}], 673*c8dee2aaSAndroid Build Coastguard Worker 674*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 675*c8dee2aaSAndroid Build Coastguard Worker "InvalidateFramebuffer", "InvalidateSubFramebuffer", 676*c8dee2aaSAndroid Build Coastguard Worker ], 677*c8dee2aaSAndroid Build Coastguard Worker }, 678*c8dee2aaSAndroid Build Coastguard Worker 679*c8dee2aaSAndroid Build Coastguard Worker { 680*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"min_version": [4, 3], "ext": "<core>"}, 681*c8dee2aaSAndroid Build Coastguard Worker {/* else if */ "ext": "GL_ARB_ES2_compatibility"}], 682*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "<core>"}], 683*c8dee2aaSAndroid Build Coastguard Worker "WebGL": [{"ext": "<core>"}], 684*c8dee2aaSAndroid Build Coastguard Worker 685*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 686*c8dee2aaSAndroid Build Coastguard Worker "GetShaderPrecisionFormat", 687*c8dee2aaSAndroid Build Coastguard Worker ], 688*c8dee2aaSAndroid Build Coastguard Worker }, 689*c8dee2aaSAndroid Build Coastguard Worker 690*c8dee2aaSAndroid Build Coastguard Worker { 691*c8dee2aaSAndroid Build Coastguard Worker "GL": [{"ext": "GL_NV_fence"}], 692*c8dee2aaSAndroid Build Coastguard Worker "GLES": [{"ext": "GL_NV_fence"}], 693*c8dee2aaSAndroid Build Coastguard Worker "WebGL": null, 694*c8dee2aaSAndroid Build Coastguard Worker 695*c8dee2aaSAndroid Build Coastguard Worker "functions": [ 696*c8dee2aaSAndroid Build Coastguard Worker "DeleteFences", "FinishFence", "GenFences", "SetFence", "TestFence", 697*c8dee2aaSAndroid Build Coastguard Worker ], 698*c8dee2aaSAndroid Build Coastguard Worker } 699*c8dee2aaSAndroid Build Coastguard Worker] 700