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