<?xml version="1.0"?>
<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">

<!-- OpenGL ES specific extensions -->

<OpenGLAPI>

<!-- part of es1.1 extension pack -->
<category name="GL_OES_blend_equation_separate" number="1">
    <enum name="BLEND_EQUATION_RGB_OES"                   value="0x8009"/>
    <enum name="BLEND_EQUATION_ALPHA_OES"                 value="0x883D"/>

    <function name="BlendEquationSeparateOES" alias="BlendEquationSeparate"
	      es1="1.0">
        <param name="modeRGB" type="GLenum"/>
        <param name="modeA" type="GLenum"/>
    </function>
</category>

<!-- part of es1.1 extension pack -->
<category name="GL_OES_blend_func_separate" number="2">
    <enum name="BLEND_DST_RGB_OES"                        value="0x80C8"/>
    <enum name="BLEND_SRC_RGB_OES"                        value="0x80C9"/>
    <enum name="BLEND_DST_ALPHA_OES"                      value="0x80CA"/>
    <enum name="BLEND_SRC_ALPHA_OES"                      value="0x80CB"/>

    <function name="BlendFuncSeparateOES" alias="BlendFuncSeparate" es1="1.0">
        <param name="sfactorRGB" type="GLenum"/>
        <param name="dfactorRGB" type="GLenum"/>
        <param name="sfactorAlpha" type="GLenum"/>
        <param name="dfactorAlpha" type="GLenum"/>
    </function>
</category>

<!-- part of es1.1 extension pack -->
<category name="GL_OES_blend_subtract" number="3">
    <enum name="FUNC_ADD_OES"                             value="0x8006"/>
    <enum name="BLEND_EQUATION_OES"                       value="0x8009"/>
    <enum name="FUNC_SUBTRACT_OES"                        value="0x800A"/>
    <enum name="FUNC_REVERSE_SUBTRACT_OES"                value="0x800B"/>

    <function name="BlendEquationOES" alias="BlendEquation" es1="1.0">
        <param name="mode" type="GLenum"/>
    </function>
</category>

<!-- core addition to es1.0 and later -->
<category name="GL_OES_byte_coordinates" number="4">
    <enum name="BYTE"                                     value="0x1400"/>
</category>

<category name="GL_OES_compressed_ETC1_RGB8_texture" number="5">
    <enum name="ETC1_RGB8_OES"                            value="0x8D64"/>
</category>

<category name="GL_OES_compressed_paletted_texture" number="6">
    <enum name="PALETTE4_RGB8_OES"                        value="0x8B90"/>
    <enum name="PALETTE4_RGBA8_OES"                       value="0x8B91"/>
    <enum name="PALETTE4_R5_G6_B5_OES"                    value="0x8B92"/>
    <enum name="PALETTE4_RGBA4_OES"                       value="0x8B93"/>
    <enum name="PALETTE4_RGB5_A1_OES"                     value="0x8B94"/>
    <enum name="PALETTE8_RGB8_OES"                        value="0x8B95"/>
    <enum name="PALETTE8_RGBA8_OES"                       value="0x8B96"/>
    <enum name="PALETTE8_R5_G6_B5_OES"                    value="0x8B97"/>
    <enum name="PALETTE8_RGBA4_OES"                       value="0x8B98"/>
    <enum name="PALETTE8_RGB5_A1_OES"                     value="0x8B99"/>
</category>

<!-- optional for es1.1 -->
<category name="GL_OES_draw_texture" number="7">
    <enum name="TEXTURE_CROP_RECT_OES"                    value="0x8B9D"/>

    <function name="DrawTexiOES" es1="1.0" desktop="false">
        <param name="x" type="GLint"/>
        <param name="y" type="GLint"/>
        <param name="z" type="GLint"/>
        <param name="width" type="GLint"/>
        <param name="height" type="GLint"/>
    </function>

    <function name="DrawTexivOES" es1="1.0" desktop="false">
        <param name="coords" type="const GLint *" count="5"/>
    </function>

    <function name="DrawTexfOES" es1="1.0" desktop="false">
        <param name="x" type="GLfloat"/>
        <param name="y" type="GLfloat"/>
        <param name="z" type="GLfloat"/>
        <param name="width" type="GLfloat"/>
        <param name="height" type="GLfloat"/>
    </function>

    <function name="DrawTexfvOES" es1="1.0" desktop="false">
        <param name="coords" type="const GLfloat *" count="5"/>
    </function>

    <function name="DrawTexsOES" es1="1.0" desktop="false">
        <param name="x" type="GLshort"/>
        <param name="y" type="GLshort"/>
        <param name="z" type="GLshort"/>
        <param name="width" type="GLshort"/>
        <param name="height" type="GLshort"/>
    </function>

    <function name="DrawTexsvOES" es1="1.0" desktop="false">
        <param name="coords" type="const GLshort *" count="5"/>
    </function>

    <function name="DrawTexxOES" es1="1.0" desktop="false">
        <param name="x" type="GLfixed"/>
        <param name="y" type="GLfixed"/>
        <param name="z" type="GLfixed"/>
        <param name="width" type="GLfixed"/>
        <param name="height" type="GLfixed"/>
    </function>

    <function name="DrawTexxvOES" es1="1.0" desktop="false">
        <param name="coords" type="const GLfixed *" count="5"/>
    </function>

    <!-- TexParameter{ifx}v is skipped here -->
</category>

<!-- core addition to es1.0 and later -->
<!-- 9. GL_OES_fixed_point -->

<!-- part of es1.1 extension pack -->
<category name="GL_OES_framebuffer_object" number="10">
    <enum name="NONE_OES"                                 value="0"/>
    <enum name="INVALID_FRAMEBUFFER_OPERATION_OES"        value="0x0506"/>
    <enum name="RGBA4_OES"                                value="0x8056"/>
    <enum name="RGB5_A1_OES"                              value="0x8057"/>
    <enum name="DEPTH_COMPONENT16_OES"                    value="0x81A5"/>

    <enum name="MAX_RENDERBUFFER_SIZE_OES"                value="0x84E8"/>
    <enum name="FRAMEBUFFER_BINDING_OES"                  value="0x8CA6"/>
    <enum name="RENDERBUFFER_BINDING_OES"                 value="0x8CA7"/>
    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES"   value="0x8CD0"/>
    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES"   value="0x8CD1"/>
    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" value="0x8CD2"/>
    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" value="0x8CD3"/>
    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" value="0x8CD4"/>
    <enum name="FRAMEBUFFER_COMPLETE_OES"                 value="0x8CD5"/>
    <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES"    value="0x8CD6"/>
    <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES" value="0x8CD7"/>
    <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES"    value="0x8CD9"/>
    <enum name="FRAMEBUFFER_INCOMPLETE_FORMATS_OES"       value="0x8CDA"/>
    <enum name="FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES"   value="0x8CDB"/>
    <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES"   value="0x8CDC"/>
    <enum name="FRAMEBUFFER_UNSUPPORTED_OES"              value="0x8CDD"/>
    <enum name="COLOR_ATTACHMENT0_OES"                    value="0x8CE0"/>
    <enum name="DEPTH_ATTACHMENT_OES"                     value="0x8D00"/>
    <enum name="STENCIL_ATTACHMENT_OES"                   value="0x8D20"/>
    <enum name="FRAMEBUFFER_OES"                          value="0x8D40"/>
    <enum name="RENDERBUFFER_OES"                         value="0x8D41"/>
    <enum name="RENDERBUFFER_WIDTH_OES"                   value="0x8D42"/>
    <enum name="RENDERBUFFER_HEIGHT_OES"                  value="0x8D43"/>
    <enum name="RENDERBUFFER_INTERNAL_FORMAT_OES"         value="0x8D44"/>
    <enum name="STENCIL_INDEX1_OES"                       value="0x8D46"/>
    <enum name="STENCIL_INDEX4_OES"                       value="0x8D47"/>
    <enum name="STENCIL_INDEX8_OES"                       value="0x8D48"/>
    <enum name="RENDERBUFFER_RED_SIZE_OES"                value="0x8D50"/>
    <enum name="RENDERBUFFER_GREEN_SIZE_OES"              value="0x8D51"/>
    <enum name="RENDERBUFFER_BLUE_SIZE_OES"               value="0x8D52"/>
    <enum name="RENDERBUFFER_ALPHA_SIZE_OES"              value="0x8D53"/>
    <enum name="RENDERBUFFER_DEPTH_SIZE_OES"              value="0x8D54"/>
    <enum name="RENDERBUFFER_STENCIL_SIZE_OES"            value="0x8D55"/>
    <enum name="RGB565_OES"                               value="0x8D62"/>

    <function name="BindFramebufferOES" alias="BindFramebuffer" es1="1.0">
        <param name="target" type="GLenum"/>
        <param name="framebuffer" type="GLuint"/>
    </function>

    <function name="BindRenderbufferOES" alias="BindRenderbuffer" es1="1.0">
        <param name="target" type="GLenum"/>
        <param name="renderbuffer" type="GLuint"/>
    </function>

    <function name="CheckFramebufferStatusOES"
              alias="CheckFramebufferStatus" es1="1.0">
        <param name="target" type="GLenum"/>
	<return type="GLenum"/>
    </function>

    <function name="DeleteFramebuffersOES" alias="DeleteFramebuffers" es1="1.0">
        <param name="n" type="GLsizei" counter="true"/>
        <param name="framebuffers" type="const GLuint *" count="n"/>
    </function>

    <function name="DeleteRenderbuffersOES" alias="DeleteRenderbuffers"
	      es1="1.0">
        <param name="n" type="GLsizei" counter="true"/>
        <param name="renderbuffers" type="const GLuint *" count="n"/>
    </function>

    <function name="FramebufferRenderbufferOES"
              alias="FramebufferRenderbuffer" es1="1.0">
        <param name="target" type="GLenum"/>
        <param name="attachment" type="GLenum"/>
        <param name="renderbuffertarget" type="GLenum"/>
        <param name="renderbuffer" type="GLuint"/>
    </function>

    <function name="FramebufferTexture2DOES" alias="FramebufferTexture2D"
	      es1="1.0">
        <param name="target" type="GLenum"/>
        <param name="attachment" type="GLenum"/>
        <param name="textarget" type="GLenum"/>
        <param name="texture" type="GLuint"/>
        <param name="level" type="GLint"/>
    </function>

    <function name="GenerateMipmapOES" alias="GenerateMipmap" es1="1.0">
        <param name="target" type="GLenum"/>
    </function>

    <function name="GenFramebuffersOES" alias="GenFramebuffers" es1="1.0">
        <param name="n" type="GLsizei" counter="true"/>
        <param name="framebuffers" type="GLuint *" count="n" output="true"/>
    </function>

    <function name="GenRenderbuffersOES" alias="GenRenderbuffers" es1="1.0">
        <param name="n" type="GLsizei" counter="true"/>
        <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
    </function>

    <function name="GetFramebufferAttachmentParameterivOES"
              alias="GetFramebufferAttachmentParameteriv" es1="1.0">
        <param name="target" type="GLenum"/>
        <param name="attachment" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLint *" output="true"/>
    </function>

    <function name="GetRenderbufferParameterivOES"
              alias="GetRenderbufferParameteriv" es1="1.0">
        <param name="target" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLint *" output="true"/>
    </function>

    <function name="IsFramebufferOES" alias="IsFramebuffer" es1="1.0">
        <param name="framebuffer" type="GLuint"/>
	<return type="GLboolean"/>
    </function>

    <function name="IsRenderbufferOES" alias="IsRenderbuffer" es1="1.0">
        <param name="renderbuffer" type="GLuint"/>
	<return type="GLboolean"/>
    </function>

    <function name="RenderbufferStorageOES" alias="RenderbufferStorage"
	      es1="1.0">
        <param name="target" type="GLenum"/>
        <param name="internalformat" type="GLenum"/>
        <param name="width" type="GLsizei"/>
        <param name="height" type="GLsizei"/>
    </function>
</category>

<!-- core addition to es1.1 -->
<category name="GL_OES_matrix_get" number="11">
    <enum name="MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"   value="0x898D"/>
    <enum name="PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"  value="0x898E"/>
    <enum name="TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"	  value="0x898F"/>
</category>

<!-- optional for es1.1 -->
<category name="GL_OES_matrix_palette" number="12">
    <enum name="MAX_VERTEX_UNITS_OES"                     value="0x86A4"/>
    <enum name="WEIGHT_ARRAY_TYPE_OES"                    value="0x86A9"/>
    <enum name="WEIGHT_ARRAY_STRIDE_OES"                  value="0x86AA"/>
    <enum name="WEIGHT_ARRAY_SIZE_OES"                    value="0x86AB"/>
    <enum name="WEIGHT_ARRAY_POINTER_OES"                 value="0x86AC"/>
    <enum name="WEIGHT_ARRAY_OES"                         value="0x86AD"/>
    <enum name="MATRIX_PALETTE_OES"                       value="0x8840"/>
    <enum name="MAX_PALETTE_MATRICES_OES"                 value="0x8842"/>
    <enum name="CURRENT_PALETTE_MATRIX_OES"               value="0x8843"/>
    <enum name="MATRIX_INDEX_ARRAY_OES"                   value="0x8844"/>
    <enum name="MATRIX_INDEX_ARRAY_SIZE_OES"              value="0x8846"/>
    <enum name="MATRIX_INDEX_ARRAY_TYPE_OES"              value="0x8847"/>
    <enum name="MATRIX_INDEX_ARRAY_STRIDE_OES"            value="0x8848"/>
    <enum name="MATRIX_INDEX_ARRAY_POINTER_OES"           value="0x8849"/>
    <enum name="WEIGHT_ARRAY_BUFFER_BINDING_OES"          value="0x889E"/>
    <enum name="MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES"    value="0x8B9E"/>

    <function name="CurrentPaletteMatrixOES" alias="CurrentPaletteMatrixARB"
	      exec="skip">
        <param name="matrixpaletteindex" type="GLuint"/>
    </function>

    <!-- no offset -->
    <function name="LoadPaletteFromModelViewMatrixOES" exec="skip">
    </function>

    <function name="MatrixIndexPointerOES" alias="MatrixIndexPointerARB"
	      exec="skip">
        <param name="size" type="GLint"/>
        <param name="type" type="GLenum"/>
        <param name="stride" type="GLsizei"/>
        <param name="pointer" type="const GLvoid *"/>
    </function>

    <function name="WeightPointerOES" alias="WeightPointerARB" exec="skip">
        <param name="size" type="GLint"/>
        <param name="type" type="GLenum"/>
        <param name="stride" type="GLsizei"/>
        <param name="pointer" type="const GLvoid *"/>
    </function>
</category>

<!-- required for es1.1 -->
<category name="GL_OES_point_size_array" number="14">
    <enum name="POINT_SIZE_ARRAY_TYPE_OES"                value="0x898A"/>
    <enum name="POINT_SIZE_ARRAY_STRIDE_OES"	          value="0x898B"/>
    <enum name="POINT_SIZE_ARRAY_POINTER_OES"	          value="0x898C"/>
    <enum name="POINT_SIZE_ARRAY_OES"                     value="0x8B9C"/>
    <enum name="POINT_SIZE_ARRAY_BUFFER_BINDING_OES"	  value="0x8B9F"/>

    <function name="PointSizePointerOES" es1="1.0" desktop="false"
              no_error="true">
        <param name="type" type="GLenum"/>
        <param name="stride" type="GLsizei"/>
        <param name="pointer" type="const GLvoid *"/>
    </function>
</category>

<!-- required for es1.1 -->
<category name="GL_OES_point_sprite" number="15">
    <enum name="POINT_SPRITE_OES"                         value="0x8861"/>
    <enum name="COORD_REPLACE_OES"	                  value="0x8862"/>
</category>

<!-- optional for es1.0 -->
<category name="GL_OES_query_matrix" number="16">
    <function name="QueryMatrixxOES" es1="1.0" desktop="false">
        <param name="mantissa" type="GLfixed *" count="16" />
        <param name="exponent" type="GLint *" count="16" />
	<return type="GLbitfield"/>
    </function>
</category>

<!-- required for es1.0 and later -->
<!-- 17. GL_OES_read_format -->

<!-- core addition to es1.0 and later -->
<!-- 18. GL_OES_single_precision -->

<!-- part of es1.1 extension pack -->
<category name="GL_OES_texture_cube_map" number="20">
    <enum name="TEXTURE_GEN_MODE_OES"                     value="0x2500"/>
    <enum name="NORMAL_MAP_OES"                           value="0x8511"/>
    <enum name="REFLECTION_MAP_OES"                       value="0x8512"/>
    <enum name="TEXTURE_CUBE_MAP_OES"                     value="0x8513"/>
    <enum name="TEXTURE_BINDING_CUBE_MAP_OES"             value="0x8514"/>
    <enum name="TEXTURE_CUBE_MAP_POSITIVE_X_OES"          value="0x8515"/>
    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X_OES"          value="0x8516"/>
    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y_OES"          value="0x8517"/>
    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y_OES"          value="0x8518"/>
    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z_OES"          value="0x8519"/>
    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z_OES"          value="0x851A"/>
    <enum name="MAX_CUBE_MAP_TEXTURE_SIZE_OES"            value="0x851C"/>
    <enum name="TEXTURE_GEN_STR_OES"                      value="0x8D60"/>

    <function name="GetTexGenfvOES" alias="GetTexGenfv" es1="1.0">
        <param name="coord" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
    </function>

    <function name="GetTexGenivOES" alias="GetTexGeniv" es1="1.0">
        <param name="coord" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLint *" output="true" variable_param="pname"/>
    </function>

    <function name="TexGenfOES" alias="TexGenf" es1="1.0">
        <param name="coord" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="param" type="GLfloat"/>
    </function>

    <function name="TexGenfvOES" alias="TexGenfv" es1="1.0">
        <param name="coord" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="const GLfloat *" variable_param="pname"/>
    </function>

    <function name="TexGeniOES" alias="TexGeni" es1="1.0">
        <param name="coord" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="param" type="GLint"/>
    </function>

    <function name="TexGenivOES" alias="TexGeniv" es1="1.0">
        <param name="coord" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="const GLint *" variable_param="pname"/>
    </function>
</category>

<category name="GL_OES_texture_env_crossbar" number="21">
    <!-- No new functions, types, enums. -->
</category>

<category name="GL_OES_texture_mirrored_repeat" number="22">
    <!-- No new functions, types, enums. -->
</category>

<!-- 23. GL_OES_EGL_image -->

<category name="GL_OES_depth24" number="24">
    <enum name="DEPTH_COMPONENT24_OES"                    value="0x81A6"/>
</category>

<category name="GL_OES_depth32" number="25">
    <enum name="DEPTH_COMPONENT32_OES"                    value="0x81A7"/>
</category>

<!-- 26. GL_OES_element_index_uint -->

<!-- 27. GL_OES_fbo_render_mipmap -->

<category name="GL_OES_mapbuffer" number="29">
    <enum name="WRITE_ONLY_OES"                           value="0x88B9"/>
    <enum name="BUFFER_ACCESS_OES"                        value="0x88BB"/>
    <enum name="BUFFER_MAPPED_OES"                        value="0x88BC"/>
    <enum name="BUFFER_MAP_POINTER_OES"                   value="0x88BD"/>

    <function name="GetBufferPointervOES" alias="GetBufferPointerv"
	      es1="1.0" es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLvoid **"/>
    </function>

    <function name="MapBufferOES" alias="MapBuffer" es1="1.0" es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="access" type="GLenum"/>
	<return type="GLvoid *"/>
    </function>

    <function name="UnmapBufferOES" alias="UnmapBuffer" es1="1.0" es2="2.0">
        <param name="target" type="GLenum"/>
	<return type="GLboolean"/>
    </function>
</category>

<category name="GL_OES_rgb8_rgba8" number="30">
    <enum name="RGB8_OES"                                 value="0x8051"/>
    <enum name="RGBA8_OES"                                value="0x8058"/>
</category>

<category name="GL_OES_stencil1" number="31">
    <enum name="STENCIL_INDEX1_OES"                       value="0x8D46"/>
</category>

<category name="GL_OES_stencil4" number="32">
    <enum name="STENCIL_INDEX4_OES"                       value="0x8D47"/>
</category>

<category name="GL_OES_stencil8" number="33">
    <enum name="STENCIL_INDEX8_OES"                       value="0x8D48"/>
</category>

<category name="GL_OES_texture_3D" number="34">
    <enum name="TEXTURE_BINDING_3D_OES"                   value="0x806A"/>
    <enum name="TEXTURE_3D_OES"                           value="0x806F"/>
    <enum name="TEXTURE_WRAP_R_OES"                       value="0x8072"/>
    <enum name="MAX_3D_TEXTURE_SIZE_OES"                  value="0x8073"/>
    <enum name="SAMPLER_3D_OES"                           value="0x8B5F"/>
    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" value="0x8CD4"/>

    <function name="CompressedTexImage3DOES" alias="CompressedTexImage3D"
	      es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="level" type="GLint"/>
        <param name="internalformat" type="GLenum"/>
        <param name="width" type="GLsizei"/>
        <param name="height" type="GLsizei"/>
        <param name="depth" type="GLsizei"/>
        <param name="border" type="GLint"/>
        <param name="imageSize" type="GLsizei" counter="true"/>
        <param name="data" type="const GLvoid *" count="imageSize"/>
    </function>

    <function name="CompressedTexSubImage3DOES"
              alias="CompressedTexSubImage3D" es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="level" type="GLint"/>
        <param name="xoffset" type="GLint"/>
        <param name="yoffset" type="GLint"/>
        <param name="zoffset" type="GLint"/>
        <param name="width" type="GLsizei"/>
        <param name="height" type="GLsizei"/>
        <param name="depth" type="GLsizei"/>
        <param name="format" type="GLenum"/>
        <param name="imageSize" type="GLsizei" counter="true"/>
        <param name="data" type="const GLvoid *" count="imageSize"/>
    </function>

    <function name="CopyTexSubImage3DOES" alias="CopyTexSubImage3D" es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="level" type="GLint"/>
        <param name="xoffset" type="GLint"/>
        <param name="yoffset" type="GLint"/>
        <param name="zoffset" type="GLint"/>
        <param name="x" type="GLint"/>
        <param name="y" type="GLint"/>
        <param name="width" type="GLsizei"/>
        <param name="height" type="GLsizei"/>
    </function>

    <function name="FramebufferTexture3DOES" alias="FramebufferTexture3D"
	      es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="attachment" type="GLenum"/>
        <param name="textarget" type="GLenum"/>
        <param name="texture" type="GLuint"/>
        <param name="level" type="GLint"/>
        <param name="zoffset" type="GLint"/>
    </function>

    <function name="TexImage3DOES" alias="TexImage3D" es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="level" type="GLint"/>
        <param name="internalformat" type="GLenum"/>
        <param name="width" type="GLsizei"/>
        <param name="height" type="GLsizei"/>
        <param name="depth" type="GLsizei"/>
        <param name="border" type="GLint"/>
        <param name="format" type="GLenum"/>
        <param name="type" type="GLenum"/>
        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
    </function>

    <function name="TexSubImage3DOES" alias="TexSubImage3D" es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="level" type="GLint"/>
        <param name="xoffset" type="GLint"/>
        <param name="yoffset" type="GLint"/>
        <param name="zoffset" type="GLint"/>
        <param name="width" type="GLsizei"/>
        <param name="height" type="GLsizei"/>
        <param name="depth" type="GLsizei"/>
        <param name="format" type="GLenum"/>
        <param name="type" type="GLenum"/>
        <param name="UNUSED" type="GLuint" padding="true"/>
        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
    </function>
</category>

<!-- the other name is OES_texture_float_linear -->
<!-- 35. GL_OES_texture_half_float_linear -->

<!-- the other name is OES_texture_float -->
<category name="GL_OES_texture_half_float" number="36">
    <enum name="HALF_FLOAT_OES"                           value="0x8D61"/>
</category>

<!-- 37. GL_OES_texture_npot -->

<category name="GL_OES_vertex_half_float" number="38">
    <enum name="HALF_FLOAT_OES"                           value="0x8D61"/>
</category>

<category name="GL_AMD_compressed_ATC_texture" number="40">
    <enum name="ATC_RGB_AMD"                              value="0x8C92"/>
    <enum name="ATC_RGBA_EXPLICIT_ALPHA_AMD"              value="0x8C93"/>
    <enum name="ATC_RGBA_INTERPOLATED_ALPHA_AMD"          value="0x87EE"/>
</category>

<!-- 41. GL_EXT_texture_filter_anisotropic -->

<category name="GL_EXT_texture_type_2_10_10_10_REV" number="42">
    <enum name="UNSIGNED_INT_2_10_10_10_REV_EXT"          value="0x8368"/>
</category>

<category name="GL_OES_packed_depth_stencil" number="43">
    <enum name="DEPTH_STENCIL_OES"                        value="0x84F9"/>
    <enum name="UNSIGNED_INT_24_8_OES"                    value="0x84FA"/>
    <enum name="DEPTH24_STENCIL8_OES"                     value="0x88F0"/>
</category>

<!-- 44. GL_OES_depth_texture -->

<category name="GL_OES_standard_derivatives" number="45">
    <enum name="FRAGMENT_SHADER_DERIVATIVE_HINT_OES"      value="0x8B8B"/>
</category>

<category name="GL_OES_vertex_type_10_10_10_2" number="46">
    <enum name="UNSIGNED_INT_10_10_10_2_OES"              value="0x8DF6"/>
    <enum name="INT_10_10_10_2_OES"                       value="0x8DF7"/>
</category>

<category name="GL_OES_get_program_binary" number="47">
    <enum name="PROGRAM_BINARY_LENGTH_OES"                value="0x8741"/>
    <enum name="NUM_PROGRAM_BINARY_FORMATS_OES"           value="0x87FE"/>
    <enum name="PROGRAM_BINARY_FORMATS_OES"               value="0x87FF"/>

    <function name="GetProgramBinaryOES" alias="GetProgramBinary" es2="2.0">
        <param name="program" type="GLuint"/>
        <param name="bufSize" type="GLsizei"/>
        <param name="length" type="GLsizei *"/>
        <param name="binaryFormat" type="GLenum *"/>
        <param name="binary" type="GLvoid *"/>
    </function>

    <function name="ProgramBinaryOES" alias="ProgramBinary" es2="2.0">
        <param name="program" type="GLuint"/>
        <param name="binaryFormat" type="GLenum"/>
        <param name="binary" type="const GLvoid *"/>
        <param name="length" type="GLint"/>
    </function>
</category>

<category name="GL_EXT_texture_compression_dxt1" number="49">
    <enum name="COMPRESSED_RGB_S3TC_DXT1_EXT"             value="0x83F0"/>
    <enum name="COMPRESSED_RGBA_S3TC_DXT1_EXT"            value="0x83F1"/>
</category>

<category name="GL_EXT_texture_format_BGRA8888" number="51">
    <enum name="BGRA_EXT"                                 value="0x80E1"/>
</category>

<category name="GL_EXT_texture_lod_bias" number="60">
    <enum name="TEXTURE_FILTER_CONTROL_EXT"               value="0x8500"/>
    <enum name="TEXTURE_LOD_BIAS_EXT"                     value="0x8501"/>
    <enum name="MAX_TEXTURE_LOD_BIAS_EXT"                 value="0x84FD"/>
</category>

<!-- 64. GL_EXT_discard_framebuffer -->

<category name="GL_EXT_discard_framebuffer" number="64">
    <function name="DiscardFramebufferEXT" es1="1.0" es2="2.0" desktop="false">
        <param name="target" type="GLenum"/>
        <param name="numAttachments" type="GLsizei"/>
        <param name="attachments" type="const GLenum *" count="numAttachments"/>
    </function>
    <enum name="COLOR_EXT"                                value="0x1800"/>
    <enum name="DEPTH_EXT"                                value="0x1801"/>
    <enum name="STENCIL_EXT"                              value="0x1802"/>
</category>

<!-- 65. GL_EXT_blend_minmax -->

<category name="GL_EXT_read_format_bgra" number="66">
    <enum name="BGRA_EXT"                                 value="0x80E1"/>
    <enum name="UNSIGNED_SHORT_4_4_4_4_REV_EXT"           value="0x8365"/>
    <enum name="UNSIGNED_SHORT_1_5_5_5_REV_EXT"           value="0x8366"/>
</category>

<!-- 69. GL_EXT_multi_draw_arrays -->

<!-- 71. GL_OES_vertex_array_object -->
<category name="GL_OES_vertex_array_object" number="71">
    <function name="BindVertexArrayOES" alias="BindVertexArray" es2="2.0">
        <param name="array" type="GLuint"/>
    </function>

    <function name="DeleteVertexArraysOES" alias="DeleteVertexArrays" es2="2.0">
        <param name="n" type="GLsizei"/>
        <param name="arrays" type="const GLuint *" count="n"/>
    </function>

    <function name="GenVertexArraysOES" alias="GenVertexArrays" es2="2.0">
        <param name="n" type="GLsizei"/>
        <param name="arrays" type="GLuint *" output="true" count="n"/>
    </function>

    <function name="IsVertexArrayOES" alias="IsVertexArray" es2="2.0">
        <param name="array" type="GLuint"/>
        <return type="GLboolean"/>
    </function>

    <enum name="VERTEX_ARRAY_BINDING_OES"      count="1"  value="0x85B5">
        <size name="Get" mode="get"/>
    </enum>
</category>

<!-- 87. GL_OES_EGL_image_external -->
<category name="GL_OES_EGL_image_external" number="87">
    <enum name="TEXTURE_EXTERNAL_OES"                     value="0x8D65"/>
    <enum name="SAMPLER_EXTERNAL_OES"                     value="0x8D66"/>
    <enum name="TEXTURE_BINDING_EXTERNAL_OES"             value="0x8D67"/>
    <enum name="REQUIRED_TEXTURE_IMAGE_UNITS_OES"         value="0x8D68"/>
</category>

<!--
    This extension serves a similar purpose to ARB_draw_buffers except
    that this is for OpenGL ES 2.0.
-->
<category name="GL_NV_draw_buffers" number="91">
    <enum name="MAX_DRAW_BUFFERS_NV"           count="1"  value="0x8824">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER0_NV"               count="1"  value="0x8825">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER1_NV"               count="1"  value="0x8826">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER2_NV"               count="1"  value="0x8827">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER3_NV"               count="1"  value="0x8828">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER4_NV"               count="1"  value="0x8829">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER5_NV"               count="1"  value="0x882A">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER6_NV"               count="1"  value="0x882B">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER7_NV"               count="1"  value="0x882C">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER8_NV"               count="1"  value="0x882D">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER9_NV"               count="1"  value="0x882E">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER10_NV"              count="1"  value="0x882F">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER11_NV"              count="1"  value="0x8830">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER12_NV"              count="1"  value="0x8831">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER13_NV"              count="1"  value="0x8832">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER14_NV"              count="1"  value="0x8833">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="DRAW_BUFFER15_NV"              count="1"  value="0x8834">
        <size name="Get" mode="get"/>
    </enum>

    <function name="DrawBuffersNV" alias="DrawBuffers" es2="2.0">
        <param name="n" type="GLsizei" counter="true"/>
        <param name="bufs" type="const GLenum *" count="n"/>
    </function>
</category>

<!-- 93. GL_NV_read_buffer -->
<category name="GL_NV_read_buffer">
    <function name="ReadBufferNV" alias="ReadBuffer" es2="2.0">
        <param name="mode" type="GLenum"/>
    </function>
</category>

<!-- 100. GL_EXT_occlusion_query_boolean -->
<category name="GL_EXT_occlusion_query_boolean" number="100">
    <enum name="CURRENT_QUERY_EXT"                   value="0x8865"/>
    <enum name="QUERY_RESULT_EXT"                    value="0x8866"/>
    <enum name="QUERY_RESULT_AVAILABLE_EXT"          value="0x8867"/>
    <enum name="ANY_SAMPLES_PASSED_EXT"              value="0x8C2F"/>
    <enum name="ANY_SAMPLES_PASSED_CONSERVATIVE_EXT" value="0x8D6A"/>

    <function name="GenQueriesEXT" alias="GenQueries" es2="2.0">
        <param name="n" type="GLsizei"/>
        <param name="ids" type="GLuint *"/>
    </function>

    <function name="DeleteQueriesEXT" alias="DeleteQueries" es2="2.0">
        <param name="n" type="GLsizei"/>
        <param name="ids" type="const GLuint *"/>
    </function>

    <function name="IsQueryEXT" alias="IsQuery" es2="2.0">
        <param name="id" type="GLuint"/>
        <return type="GLboolean"/>
    </function>

    <function name="BeginQueryEXT" alias="BeginQuery" es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="id" type="GLuint"/>
    </function>

    <function name="EndQueryEXT" alias="EndQuery" es2="2.0">
        <param name="target" type="GLenum"/>
    </function>

    <function name="GetQueryivEXT" alias="GetQueryiv" es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLint *"/>
    </function>

    <function name="GetQueryObjectivEXT" alias="GetQueryObjectiv" es2="2.0">
        <param name="id" type="GLuint"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLint *"/>
    </function>

    <function name="GetQueryObjectuivEXT" alias="GetQueryObjectuiv" es2="2.0">
        <param name="id" type="GLuint"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLuint *"/>
    </function>
</category>

<!-- 103. GL_EXT_texture_rg -->
<category name="GL_EXT_texture_rg" number="103">
    <enum name="RED_EXT"                                  value="0x1903"/>
    <enum name="RG_EXT"                                   value="0x8227"/>
    <enum name="R8_EXT"                                   value="0x8229"/>
    <enum name="RG8_EXT"                                  value="0x822B"/>
</category>

<xi:include href="EXT_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>

<!-- 111. GL_ANGLE_texture_compression_dxt -->
<category name="GL_ANGLE_texture_compression_dxt" number="111">
    <enum name="COMPRESSED_RGBA_S3TC_DXT3_ANGLE"        value="0x83F2"/>
    <enum name="COMPRESSED_RGBA_S3TC_DXT5_ANGLE"        value="0x83F3"/>
</category>

<!-- 121. GL_EXT_map_buffer_range -->
<category name="GL_EXT_map_buffer_range" number="121">
    <enum name="MAP_READ_BIT_EXT"                         value="0x0001"/>
    <enum name="MAP_WRITE_BIT_EXT"                        value="0x0002"/>
    <enum name="MAP_INVALIDATE_RANGE_BIT_EXT"             value="0x0004"/>
    <enum name="MAP_INVALIDATE_BUFFER_BIT_EXT"            value="0x0008"/>
    <enum name="MAP_FLUSH_EXPLICIT_BIT_EXT"               value="0x0010"/>
    <enum name="MAP_UNSYNCHRONIZED_BIT_EXT"               value="0x0020"/>

    <function name="MapBufferRangeEXT" alias="MapBufferRange"
	      es1="1.0" es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="offset" type="GLintptr"/>
        <param name="size" type="GLsizeiptr"/>
        <param name="length" type="GLbitfield"/>
        <return type="GLvoid *"/>
    </function>

    <function name="FlushMappedBufferRangeEXT" alias="FlushMappedBufferRange"
	      es1="1.0" es2="2.0">
        <param name="target" type="GLenum"/>
        <param name="offset" type="GLintptr"/>
        <param name="length" type="GLsizeiptr"/>
    </function>
</category>

<!-- 150. GL_EXT_disjoint_timer_query -->
<category name="GL_EXT_disjoint_timer_query" number="150">
    <enum name="QUERY_COUNTER_BITS_EXT"     value="0x8864"/>
    <enum name="CURRENT_QUERY_EXT"          value="0x8865"/>
    <enum name="QUERY_RESULT_EXT"           value="0x8866"/>
    <enum name="QUERY_RESULT_AVAILABLE_EXT" value="0x8867"/>
    <enum name="TIME_ELAPSED_EXT"           value="0x88BF"/>
    <enum name="TIMESTAMP_EXT"              value="0x8E28"/>
    <enum name="GPU_DISJOINT_EXT"           value="0x8FBB"/>

    <function name="QueryCounterEXT" alias="QueryCounter" es2="2.0">
        <param name="id" type="GLuint"/>
        <param name="target" type="GLenum"/>
    </function>
</category>

<!-- 151. GL_EXT_draw_buffers -->
<category name="GL_EXT_draw_buffers" number="151">
    <function name="DrawBuffersEXT" alias="DrawBuffers" es2="2.0">
        <param name="n" type="GLsizei" counter="true"/>
        <param name="bufs" type="const GLenum *" count="n"/>
    </function>
</category>

<category name="GL_OES_sample_shading" number="169">
    <function name="MinSampleShadingOES" alias="MinSampleShading" es2="3.0">
        <param name="value" type="GLfloat"/>
    </function>
</category>

<!-- 174. GL_OES_texture_storage_multisample_2d_array -->
<category name="GL_OES_texture_storage_multisample_2d_array" number="174">
    <enum name="TEXTURE_2D_MULTISAMPLE_ARRAY_OES"              value="0x9102"/>
    <enum name="TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES"      value="0x9105"/>
    <enum name="SAMPLER_2D_MULTISAMPLE_ARRAY_OES"              value="0x910B"/>
    <enum name="INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES"          value="0x910C"/>
    <enum name="UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES" value="0x910D"/>

    <function name="TexStorage3DMultisampleOES" alias="TexStorage3DMultisample" es2="3.1">
        <param name="target" type="GLenum"/>
        <param name="samples" type="GLsizei"/>
        <param name="internalformat" type="GLenum"/>
        <param name="width" type="GLsizei"/>
        <param name="height" type="GLsizei"/>
        <param name="depth" type="GLsizei"/>
        <param name="fixedsamplelocations" type="GLboolean"/>
    </function>
</category>

<category name="GL_EXT_draw_buffers_indexed" number="176">

  <function name="BlendFunciEXT" alias="BlendFunciARB" es2="3.0">
    <param name="buf" type="GLuint"/>
    <param name="sfactor" type="GLenum"/>
    <param name="dfactor" type="GLenum"/>
  </function>

  <function name="BlendFuncSeparateiEXT" alias="BlendFuncSeparateiARB" es2="3.0">
    <param name="buf" type="GLuint"/>
    <param name="sfactorRGB" type="GLenum"/>
    <param name="dfactorRGB" type="GLenum"/>
    <param name="sfactorAlpha" type="GLenum"/>
    <param name="dfactorAlpha" type="GLenum"/>
  </function>

  <function name="BlendEquationiEXT" alias="BlendEquationiARB" es2="3.0">
    <param name="buf" type="GLuint"/>
    <param name="mode" type="GLenum"/>
  </function>

  <function name="BlendEquationSeparateiEXT" alias="BlendEquationSeparateiARB" es2="3.0">
    <param name="buf" type="GLuint"/>
    <param name="modeRGB" type="GLenum"/>
    <param name="modeA" type="GLenum"/>
  </function>

  <function name="ColorMaskiEXT" alias="ColorMaski" es2="3.0">
    <param name="buf" type="GLuint"/>
    <param name="r" type="GLboolean"/>
    <param name="g" type="GLboolean"/>
    <param name="b" type="GLboolean"/>
    <param name="a" type="GLboolean"/>
  </function>

  <function name="EnableiEXT" alias="Enablei" es2="3.0">
    <param name="target" type="GLenum"/>
    <param name="index" type="GLuint"/>
  </function>

  <function name="DisableiEXT" alias="Disablei" es2="3.0">
    <param name="target" type="GLenum"/>
    <param name="index" type="GLuint"/>
  </function>

  <function name="IsEnablediEXT" alias="IsEnabledi" es2="3.0">
    <param name="target" type="GLenum"/>
    <param name="index" type="GLuint"/>
    <return type="GLboolean"/>
  </function>

</category>

<category name="GL_EXT_geometry_shader" number="177">
    <!-- The rest of the bits for this are below in OES_geometry_shader. -->
    <function name="FramebufferTextureEXT" alias="FramebufferTexture" es2="3.1">
        <param name="target" type="GLenum"/>
        <param name="attachment" type="GLenum"/>
        <param name="texture" type="GLuint"/>
        <param name="level" type="GLint"/>
    </function>
</category>

<category name="GL_EXT_texture_border_clamp" number="182">

    <!-- The *TexParameter* functions are added in EXT_texture_integer -->

    <function name="SamplerParameterIivEXT" es2="3.0" alias="SamplerParameterIiv">
      <param name="sampler" type="GLuint"/>
      <param name="pname" type="GLenum"/>
      <param name="params" type="const GLint *"/>
    </function>

    <function name="SamplerParameterIuivEXT" es2="3.0" alias="SamplerParameterIuiv">
      <param name="sampler" type="GLuint"/>
      <param name="pname" type="GLenum"/>
      <param name="params" type="const GLuint *"/>
    </function>

    <function name="GetSamplerParameterIivEXT" es2="3.0" alias="GetSamplerParameterIiv">
      <param name="sampler" type="GLuint"/>
      <param name="pname" type="GLenum"/>
      <param name="params" type="GLint *"/>
    </function>

    <function name="GetSamplerParameterIuivEXT" es2="3.0" alias="GetSamplerParameterIuiv">
      <param name="sampler" type="GLuint"/>
      <param name="pname" type="GLenum"/>
      <param name="params" type="GLuint *"/>
    </function>

</category>

<category name="GL_EXT_texture_buffer" number="183">

    <function name="TexBufferEXT" es2="3.1" alias="TexBuffer">
        <param name="target" type="GLenum"/>
        <param name="internalFormat" type="GLenum"/>
        <param name="buffer" type="GLuint"/>
    </function>

    <function name="TexBufferRangeEXT" es2="3.1" alias="TexBufferRange">
        <param name="target" type="GLenum"/>
        <param name="internalformat" type="GLenum"/>
        <param name="buffer" type="GLuint"/>
        <param name="offset" type="GLintptr"/>
        <param name="size" type="GLsizeiptr"/>
    </function>

</category>

<category name="GL_EXT_primitive_bounding_box" number="187">

    <function name="PrimitiveBoundingBoxEXT" es2="3.1" alias="PrimitiveBoundingBox">
        <param name="minX" type="GLfloat"/>
        <param name="minY" type="GLfloat"/>
        <param name="minZ" type="GLfloat"/>
        <param name="minW" type="GLfloat"/>
        <param name="maxX" type="GLfloat"/>
        <param name="maxY" type="GLfloat"/>
        <param name="maxZ" type="GLfloat"/>
        <param name="maxW" type="GLfloat"/>
    </function>

</category>

<xi:include href="KHR_robustness_es.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>

<category name="GL_EXT_base_instance" number="203">

  <function name="DrawArraysInstancedBaseInstanceEXT" es2="3.0"
            alias="DrawArraysInstancedBaseInstance">
    <param name="mode" type="GLenum"/>
    <param name="first" type="GLint"/>
    <param name="count" type="GLsizei"/>
    <param name="instancecount" type="GLsizei"/>
    <param name="baseinstance" type="GLuint"/>
  </function>

  <function name="DrawElementsInstancedBaseInstanceEXT" es2="3.0"
            alias="DrawElementsInstancedBaseInstance">
    <param name="mode" type="GLenum"/>
    <param name="count" type="GLsizei"/>
    <param name="type" type="GLenum"/>
    <param name="indices" type="const GLvoid *"/>
    <param name="instancecount" type="GLsizei"/>
    <param name="baseinstance" type="GLuint"/>
  </function>

  <function name="DrawElementsInstancedBaseVertexBaseInstanceEXT" es2="3.0"
            alias="DrawElementsInstancedBaseVertexBaseInstance">
    <param name="mode" type="GLenum"/>
    <param name="count" type="GLsizei"/>
    <param name="type" type="GLenum"/>
    <param name="indices" type="const GLvoid *"/>
    <param name="instancecount" type="GLsizei"/>
    <param name="basevertex" type="GLint"/>
    <param name="baseinstance" type="GLuint"/>
  </function>

</category>

<category name="GL_EXT_draw_elements_base_vertex" number="204">

    <function name="DrawElementsBaseVertexEXT" alias="DrawElementsBaseVertex"
              es2="2.0" exec="dynamic">
        <param name="mode" type="GLenum"/>
        <param name="count" type="GLsizei"/>
        <param name="type" type="GLenum"/>
        <param name="indices" type="const GLvoid *"/>
        <param name="basevertex" type="GLint"/>
    </function>

    <function name="DrawRangeElementsBaseVertexEXT" alias="DrawRangeElementsBaseVertex"
              es2="3.0" exec="dynamic">
        <param name="mode" type="GLenum"/>
        <param name="start" type="GLuint"/>
        <param name="end" type="GLuint"/>
        <param name="count" type="GLsizei"/>
        <param name="type" type="GLenum"/>
        <param name="indices" type="const GLvoid *"/>
        <param name="basevertex" type="GLint"/>
    </function>

    <function name="MultiDrawElementsBaseVertexEXT" alias="MultiDrawElementsBaseVertex"
              es2="2.0" exec="dynamic">
        <param name="mode" type="GLenum"/>
        <param name="count" type="const GLsizei *"/>
        <param name="type" type="GLenum"/>
        <param name="indices" type="const GLvoid * const *"/>
        <param name="primcount" type="GLsizei"/>
        <param name="basevertex" type="const GLint *"/>
    </function>

    <function name="DrawElementsInstancedBaseVertexEXT" alias="DrawElementsInstancedBaseVertex"
              es2="3.0" exec="dynamic">
        <param name="mode" type="GLenum"/>
        <param name="count" type="GLsizei"/>
        <param name="type" type="GLenum"/>
        <param name="indices" type="const GLvoid *"/>
        <param name="primcount" type="GLsizei"/>
        <param name="basevertex" type="GLint"/>
    </function>

</category>

<category name="GL_EXT_copy_image" number="208">

    <function name="CopyImageSubDataEXT" alias="CopyImageSubData" es2="3.0">
        <param name="srcName" type="GLuint"/>
        <param name="srcTarget" type="GLenum"/>
        <param name="srcLevel" type="GLint"/>
        <param name="srcX" type="GLint"/>
        <param name="srcY" type="GLint"/>
        <param name="srcZ" type="GLint"/>
        <param name="dstName" type="GLuint"/>
        <param name="dstTarget" type="GLenum"/>
        <param name="dstLevel" type="GLint"/>
        <param name="dstX" type="GLint"/>
        <param name="dstY" type="GLint"/>
        <param name="dstZ" type="GLint"/>
        <param name="srcWidth" type="GLsizei"/>
        <param name="srcHeight" type="GLsizei"/>
        <param name="srcDepth" type="GLsizei"/>
    </function>

</category>

<category name="GL_OES_draw_buffers_indexed" number="209">

  <function name="BlendFunciOES" alias="BlendFunciARB" es2="3.0">
    <param name="buf" type="GLuint"/>
    <param name="sfactor" type="GLenum"/>
    <param name="dfactor" type="GLenum"/>
  </function>

  <function name="BlendFuncSeparateiOES" alias="BlendFuncSeparateiARB" es2="3.0">
    <param name="buf" type="GLuint"/>
    <param name="sfactorRGB" type="GLenum"/>
    <param name="dfactorRGB" type="GLenum"/>
    <param name="sfactorAlpha" type="GLenum"/>
    <param name="dfactorAlpha" type="GLenum"/>
  </function>

  <function name="BlendEquationiOES" alias="BlendEquationiARB" es2="3.0">
    <param name="buf" type="GLuint"/>
    <param name="mode" type="GLenum"/>
  </function>

  <function name="BlendEquationSeparateiOES" alias="BlendEquationSeparateiARB" es2="3.0">
    <param name="buf" type="GLuint"/>
    <param name="modeRGB" type="GLenum"/>
    <param name="modeA" type="GLenum"/>
  </function>

  <function name="ColorMaskiOES" alias="ColorMaski" es2="3.0">
    <param name="buf" type="GLuint"/>
    <param name="r" type="GLboolean"/>
    <param name="g" type="GLboolean"/>
    <param name="b" type="GLboolean"/>
    <param name="a" type="GLboolean"/>
  </function>

  <function name="EnableiOES" alias="Enablei" es2="3.0">
    <param name="target" type="GLenum"/>
    <param name="index" type="GLuint"/>
  </function>

  <function name="DisableiOES" alias="Disablei" es2="3.0">
    <param name="target" type="GLenum"/>
    <param name="index" type="GLuint"/>
  </function>

  <function name="IsEnablediOES" alias="IsEnabledi" es2="3.0">
    <param name="target" type="GLenum"/>
    <param name="index" type="GLuint"/>
    <return type="GLboolean"/>
  </function>

</category>

<category name="GL_EXT_primitive_bounding_box" number="212">

    <function name="PrimitiveBoundingBoxOES" es2="3.1" alias="PrimitiveBoundingBox">
        <param name="minX" type="GLfloat"/>
        <param name="minY" type="GLfloat"/>
        <param name="minZ" type="GLfloat"/>
        <param name="minW" type="GLfloat"/>
        <param name="maxX" type="GLfloat"/>
        <param name="maxY" type="GLfloat"/>
        <param name="maxZ" type="GLfloat"/>
        <param name="maxW" type="GLfloat"/>
    </function>

</category>

<category name="GL_OES_texture_buffer" number="216">

    <function name="TexBufferOES" es2="3.1" alias="TexBuffer">
        <param name="target" type="GLenum"/>
        <param name="internalFormat" type="GLenum"/>
        <param name="buffer" type="GLuint"/>
    </function>

    <function name="TexBufferRangeOES" es2="3.1" alias="TexBufferRange">
        <param name="target" type="GLenum"/>
        <param name="internalformat" type="GLenum"/>
        <param name="buffer" type="GLuint"/>
        <param name="offset" type="GLintptr"/>
        <param name="size" type="GLsizeiptr"/>
    </function>

</category>

<category name="GL_OES_draw_elements_base_vertex" number="219">

    <function name="DrawElementsBaseVertexOES" alias="DrawElementsBaseVertex"
              es2="2.0" exec="dynamic">
        <param name="mode" type="GLenum"/>
        <param name="count" type="GLsizei"/>
        <param name="type" type="GLenum"/>
        <param name="indices" type="const GLvoid *"/>
        <param name="basevertex" type="GLint"/>
    </function>

    <function name="DrawRangeElementsBaseVertexOES" alias="DrawRangeElementsBaseVertex"
              es2="3.0" exec="dynamic">
        <param name="mode" type="GLenum"/>
        <param name="start" type="GLuint"/>
        <param name="end" type="GLuint"/>
        <param name="count" type="GLsizei"/>
        <param name="type" type="GLenum"/>
        <param name="indices" type="const GLvoid *"/>
        <param name="basevertex" type="GLint"/>
    </function>

    <function name="DrawElementsInstancedBaseVertexOES" alias="DrawElementsInstancedBaseVertex"
              es2="3.0" exec="dynamic">
        <param name="mode" type="GLenum"/>
        <param name="count" type="GLsizei"/>
        <param name="type" type="GLenum"/>
        <param name="indices" type="const GLvoid *"/>
        <param name="primcount" type="GLsizei"/>
        <param name="basevertex" type="GLint"/>
    </function>

</category>

<category name="GL_EXT_buffer_storage" number="239">
    <function name="BufferStorageEXT" alias="BufferStorage" es2="3.1">
        <param name="target" type="GLenum"/>
        <param name="size" type="GLsizeiptr"/>
        <param name="data" type="const GLvoid *"/>
        <param name="flags" type="GLbitfield"/>
    </function>
</category>

<category name="GL_EXT_blend_func_extended" number="247">

    <function name="BindFragDataLocationIndexedEXT" alias="BindFragDataLocationIndexed"
            es2="3.0">
        <param name="program" type="GLuint"/>
        <param name="colorNumber" type="GLuint"/>
        <param name="index" type="GLuint"/>
        <param name="name" type="const GLchar *"/>
    </function>

    <function name="GetFragDataIndexEXT" alias="GetFragDataIndex"
            es2="3.0">
        <param name="program" type="GLuint"/>
        <param name="name" type="const GLchar *"/>
        <return type="GLint"/>
    </function>

    <function name="GetProgramResourceLocationIndexEXT" alias="GetProgramResourceLocationIndex"
           es2="3.1">
        <param name="program" type="GLuint"/>
        <param name="programInterface" type="GLenum"/>
        <param name="name" type="const GLchar *"/>
        <return type="GLint"/>
    </function>

</category>

<category name="GL_EXT_clip_control" number="290">

    <enum name="LOWER_LEFT_EXT" value = "0x8CA1"/>
    <enum name="UPPER_LEFT_EXT" value = "0x8CA2"/>

    <enum name="NEGATIVE_ONE_TO_ONE_EXT" value = "0x935E"/>
    <enum name="ZERO_TO_ONE_EXT" value = "0x935F"/>

    <enum name="CLIP_ORIGIN_EXT" value = "0x935C"/>
    <enum name="CLIP_DEPTH_MODE_EXT" value = "0x935D"/>

    <function name="ClipControlEXT" no_error="true" es2="2.0" alias="ClipControl">
        <param name="origin" type="GLenum"/>
        <param name="depth" type="GLenum"/>
    </function>

</category>

<category name="GL_OES_copy_image" number="208">

    <function name="CopyImageSubDataOES" alias="CopyImageSubData" es2="3.0">
        <param name="srcName" type="GLuint"/>
        <param name="srcTarget" type="GLenum"/>
        <param name="srcLevel" type="GLint"/>
        <param name="srcX" type="GLint"/>
        <param name="srcY" type="GLint"/>
        <param name="srcZ" type="GLint"/>
        <param name="dstName" type="GLuint"/>
        <param name="dstTarget" type="GLenum"/>
        <param name="dstLevel" type="GLint"/>
        <param name="dstX" type="GLint"/>
        <param name="dstY" type="GLint"/>
        <param name="dstZ" type="GLint"/>
        <param name="srcWidth" type="GLsizei"/>
        <param name="srcHeight" type="GLsizei"/>
        <param name="srcDepth" type="GLsizei"/>
    </function>

</category>

<!-- 175. GL_OES_geometry_shader -->
<category name="GL_OES_geometry_shader" number="210">
    <enum name="GEOMETRY_SHADER_OES"                             value="0x8DD9"/>
    <enum name="GEOMETRY_SHADER_BIT_OES"                         value="0x00000004"/>
    <enum name="GEOMETRY_LINKED_VERTICES_OUT_OES"                value="0x8916"/>
    <enum name="GEOMETRY_LINKED_INPUT_TYPE_OES"                  value="0x8917"/>
    <enum name="GEOMETRY_LINKED_OUTPUT_TYPE_OES"                 value="0x8918"/>
    <enum name="GEOMETRY_SHADER_INVOCATIONS_OES"                 value="0x887F"/>
    <enum name="LAYER_PROVOKING_VERTEX_OES"                      value="0x825E"/>
    <enum name="MAX_GEOMETRY_UNIFORM_BLOCKS_OES"                 value="0x8A2C"/>
    <enum name="MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES"    value="0x8A32"/>
    <enum name="MAX_GEOMETRY_INPUT_COMPONENTS_OES"               value="0x9123"/>
    <enum name="MAX_GEOMETRY_OUTPUT_COMPONENTS_OES"              value="0x9124"/>
    <enum name="MAX_GEOMETRY_OUTPUT_VERTICES_OES"                value="0x8DE0"/>
    <enum name="MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES"        value="0x8DE1"/>
    <enum name="MAX_GEOMETRY_SHADER_INVOCATIONS_OES"             value="0x8E5A"/>
    <enum name="MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES"            value="0x8C29"/>
    <enum name="MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES"         value="0x92CF"/>
    <enum name="MAX_GEOMETRY_ATOMIC_COUNTERS_OES"                value="0x92D5"/>
    <enum name="MAX_GEOMETRY_IMAGE_UNIFORMS_OES"                 value="0x90CD"/>
    <enum name="MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES"          value="0x90D7"/>
    <enum name="FIRST_VERTEX_CONVENTION_OES"                     value="0x8E4D"/>
    <enum name="LAST_VERTEX_CONVENTION_OES"                      value="0x8E4E"/>
    <enum name="UNDEFINED_VERTEX_OES"                            value="0x8260"/>
    <enum name="PRIMITIVES_GENERATED_OES"                        value="0x8C87"/>
    <enum name="LINES_ADJACENCY_OES"                             value="0xA"/>
    <enum name="LINE_STRIP_ADJACENCY_OES"                        value="0xB"/>
    <enum name="TRIANGLES_ADJACENCY_OES"                         value="0xC"/>
    <enum name="TRIANGLE_STRIP_ADJACENCY_OES"                    value="0xD"/>
    <enum name="FRAMEBUFFER_DEFAULT_LAYERS_OES"                  value="0x9312"/>
    <enum name="MAX_FRAMEBUFFER_LAYERS_OES"                      value="0x9317"/>
    <enum name="FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES"        value="0x8DA8"/>
    <enum name="FRAMEBUFFER_ATTACHMENT_LAYERED_OES"              value="0x8DA7"/>
    <enum name="REFERENCED_BY_GEOMETRY_SHADER_OES"               value="0x9309"/>

    <function name="FramebufferTextureOES" alias="FramebufferTexture" es2="3.1">
        <param name="target" type="GLenum"/>
        <param name="attachment" type="GLenum"/>
        <param name="texture" type="GLuint"/>
        <param name="level" type="GLint"/>
    </function>
</category>

<category name="GL_OES_texture_border_clamp" number="215">

    <enum name="TEXTURE_BORDER_COLOR_OES" value ="0x1004"/>
    <enum name="CLAMP_TO_BORDER_OES"      value="0x812D"/>

    <function name="TexParameterIivOES" es2="3.0" alias="TexParameterIiv">
        <param name="target" type="GLenum"/>
        <param name="pname"  type="GLenum"/>
        <param name="params" type="const GLint *"/>
    </function>

    <function name="TexParameterIuivOES" es2="3.0" alias="TexParameterIuiv">
        <param name="target" type="GLenum"/>
        <param name="pname"  type="GLenum"/>
        <param name="params" type="const GLuint *"/>
    </function>

    <function name="GetTexParameterIivOES" es2="3.0" alias="GetTexParameterIiv">
        <param name="target" type="GLenum"/>
        <param name="pname"  type="GLenum"/>
        <param name="params" type="GLint *"/>
    </function>

    <function name="GetTexParameterIuivOES" es2="3.0" alias="GetTexParameterIuiv">
        <param name="target" type="GLenum"/>
        <param name="pname"  type="GLenum"/>
        <param name="params" type="GLuint *"/>
    </function>

    <function name="SamplerParameterIivOES" es2="3.0" alias="SamplerParameterIiv">
      <param name="sampler" type="GLuint"/>
      <param name="pname" type="GLenum"/>
      <param name="params" type="const GLint *"/>
    </function>

    <function name="SamplerParameterIuivOES" es2="3.0" alias="SamplerParameterIuiv">
      <param name="sampler" type="GLuint"/>
      <param name="pname" type="GLenum"/>
      <param name="params" type="const GLuint *"/>
    </function>

    <function name="GetSamplerParameterIivOES" es2="3.0" alias="GetSamplerParameterIiv">
      <param name="sampler" type="GLuint"/>
      <param name="pname" type="GLenum"/>
      <param name="params" type="GLint *"/>
    </function>

    <function name="GetSamplerParameterIuivOES" es2="3.0" alias="GetSamplerParameterIuiv">
      <param name="sampler" type="GLuint"/>
      <param name="pname" type="GLenum"/>
      <param name="params" type="GLuint *"/>
    </function>

</category>

<category name="GL_OES_viewport_array" number="267">
    <function name="ViewportArrayvOES" es2="3.1" alias="ViewportArrayv">
        <param name="first" type="GLuint"/>
        <param name="count" type="GLsizei"/>
        <param name="v" type="const GLfloat *"/>
    </function>
    <function name="ViewportIndexedfOES" es2="3.1" alias="ViewportIndexedf">
        <param name="index" type="GLuint"/>
        <param name="x" type="GLfloat"/>
        <param name="y" type="GLfloat"/>
        <param name="w" type="GLfloat"/>
        <param name="h" type="GLfloat"/>
    </function>
    <function name="ViewportIndexedfvOES" es2="3.1" alias="ViewportIndexedfv">
        <param name="index" type="GLuint"/>
        <param name="v" type="const GLfloat *"/>
    </function>
    <function name="ScissorArrayvOES" es2="3.1" alias="ScissorArrayv">
        <param name="first" type="GLuint"/>
        <param name="count" type="GLsizei"/>
        <param name="v" type="const int *"/>
    </function>
    <function name="ScissorIndexedOES" es2="3.1" alias="ScissorIndexed">
        <param name="index" type="GLuint"/>
        <param name="left" type="GLint"/>
        <param name="bottom" type="GLint"/>
        <param name="width" type="GLsizei"/>
        <param name="height" type="GLsizei"/>
    </function>
    <function name="ScissorIndexedvOES" es2="3.1" alias="ScissorIndexedv">
        <param name="index" type="GLuint"/>
        <param name="v" type="const GLint *"/>
    </function>
    <function name="DepthRangeArrayfvOES" es2="3.1" desktop="false">
        <param name="first" type="GLuint"/>
        <param name="count" type="GLsizei"/>
        <param name="v" type="const GLfloat *"/>
    </function>
    <function name="DepthRangeIndexedfOES" es2="3.1" desktop="false">
        <param name="index" type="GLuint"/>
        <param name="n" type="GLfloat"/>
        <param name="f" type="GLfloat"/>
    </function>
    <function name="GetFloati_vOES" es2="3.1" alias="GetFloati_v">
        <param name="target" type="GLenum"/>
        <param name="index" type="GLuint"/>
        <param name="data" type="GLfloat *"/>
    </function>
</category>

<!-- 218. GL_OES_texture_view -->

<category name="GL_OES_texture_view" number="218">
    <function name="TextureViewOES" es2="3.1" alias="TextureView">
        <param name="texture" type="GLuint"/>
        <param name="target" type="GLenum"/>
        <param name="origtexture" type="GLuint"/>
        <param name="internalformat" type="GLenum"/>
        <param name="minlevel" type="GLuint"/>
        <param name="numlevels" type="GLuint"/>
        <param name="minlayer" type="GLuint"/>
        <param name="numlayers" type="GLuint"/>
   </function>
</category>

<category name="GL_EXT_texture_view" number="185">
    <function name="TextureViewEXT" es2="3.1" alias="TextureView">
        <param name="texture" type="GLuint"/>
        <param name="target" type="GLenum"/>
        <param name="origtexture" type="GLuint"/>
        <param name="internalformat" type="GLenum"/>
        <param name="minlevel" type="GLuint"/>
        <param name="numlevels" type="GLuint"/>
        <param name="minlayer" type="GLuint"/>
        <param name="numlayers" type="GLuint"/>
   </function>
</category>

<!-- 302. GL_MESA_framebuffer_flip_y -->
<category name="GL_MESA_framebuffer_flip_y" number="302">
   <enum name="GL_FRAMEBUFFER_FLIP_Y_MESA" value="0x8BBB"/>
   <function name="FramebufferParameteriMESA" es2="3.0">
       <param name="target" type="GLenum"/>
       <param name="pname"  type="GLenum"/>
       <param name="param"  type="GLint" />
   </function>
   <function name="GetFramebufferParameterivMESA" es2="3.0">
       <param name="target" type="GLenum" />
       <param name="pname"  type="GLenum" />
       <param name="params" type="GLint *" output="true" />
   </function>
</category>

</OpenGLAPI>