dispatch: stop using _mesa_create_exec_table_es1() for GLES1.
[mesa.git] / src / mesa / main / APIspec.xml
index 50446a9093a21c8f395acd507118178e60f3270f..c3969526f3a246598b351ed8d19c5a605f6e19b6 100644 (file)
                <param name="plane" type="GLenum"/>
                <vector name="equation" type="const GLtype *" size="4"/>
        </proto>
-
-       <desc name="plane">
-               <range base="GL_CLIP_PLANE" from="0" to="5"/>
-       </desc>
 </template>
 
 <template name="CullFace">
                <return type="void"/>
                <param name="mode" type="GLenum"/>
        </proto>
-
-       <desc name="mode">
-               <value name="GL_FRONT"/>
-               <value name="GL_BACK"/>
-               <value name="GL_FRONT_AND_BACK"/>
-       </desc>
 </template>
 
 <template name="Fog">
                        <param name="param" type="GLtype"/>
                </vector>
        </proto>
-
-        <desc name="pname">
-               <value name="GL_FOG_MODE"/>
-               <desc name="param">
-                       <value name="GL_EXP"/>
-                       <value name="GL_EXP2"/>
-                       <value name="GL_LINEAR"/>
-               </desc>
-        </desc>
-
-       <desc name="pname">
-               <value name="GL_FOG_COLOR"/>
-
-               <desc name="params" vector_size="4"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_FOG_DENSITY"/>
-               <value name="GL_FOG_START"/>
-               <value name="GL_FOG_END"/>
-
-               <desc name="params" vector_size="1"/>
-       </desc>
 </template>
 
 <template name="FrontFace">
                <return type="void"/>
                <param name="mode" type="GLenum"/>
        </proto>
-
-       <desc name="mode">
-               <value name="GL_CW"/>
-               <value name="GL_CCW"/>
-       </desc>
 </template>
 
 <template name="Hint">
                <param name="target" type="GLenum"/>
                <param name="mode" type="GLenum"/>
        </proto>
-
-       <desc name="target" category="GLES1.1">
-               <value name="GL_FOG_HINT"/>
-               <value name="GL_LINE_SMOOTH_HINT"/>
-               <value name="GL_PERSPECTIVE_CORRECTION_HINT"/>
-               <value name="GL_POINT_SMOOTH_HINT"/>
-       </desc>
-       <desc name="target" category="OES_standard_derivatives">
-               <value name="GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES"/>
-       </desc>
-       <desc name="target">
-               <value name="GL_GENERATE_MIPMAP_HINT"/>
-       </desc>
-
-       <desc name="mode">
-               <value name="GL_FASTEST"/>
-               <value name="GL_NICEST"/>
-               <value name="GL_DONT_CARE"/>
-       </desc>
 </template>
 
 <template name="Light">
                        <param name="param" type="GLtype"/>
                </vector>
        </proto>
-
-       <desc name="light">
-               <range base="GL_LIGHT" from="0" to="7"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_AMBIENT"/>
-               <value name="GL_DIFFUSE"/>
-               <value name="GL_SPECULAR"/>
-               <value name="GL_POSITION"/>
-
-               <desc name="params" vector_size="4"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_SPOT_DIRECTION"/>
-
-               <desc name="params" vector_size="3"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_SPOT_EXPONENT"/>
-               <value name="GL_SPOT_CUTOFF"/>
-               <value name="GL_CONSTANT_ATTENUATION"/>
-               <value name="GL_LINEAR_ATTENUATION"/>
-               <value name="GL_QUADRATIC_ATTENUATION"/>
-
-               <desc name="params" vector_size="1"/>
-       </desc>
 </template>
 
 <template name="LightModel">
                        <param name="param" type="GLtype"/>
                </vector>
        </proto>
-
-       <desc name="pname">
-               <value name="GL_LIGHT_MODEL_AMBIENT"/>
-
-               <desc name="params" vector_size="4"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_LIGHT_MODEL_TWO_SIDE"/>
-               <desc name="param">
-                       <value name="GL_TRUE"/>
-                       <value name="GL_FALSE"/>
-               </desc>
-       </desc>
 </template>
 
 <template name="LineWidth">
                        <param name="param" type="GLtype"/>
                </vector>
        </proto>
-
-       <desc name="face">
-               <value name="GL_FRONT_AND_BACK"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_AMBIENT"/>
-               <value name="GL_DIFFUSE"/>
-               <value name="GL_AMBIENT_AND_DIFFUSE"/>
-               <value name="GL_SPECULAR"/>
-               <value name="GL_EMISSION"/>
-
-               <desc name="params" vector_size="4"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_SHININESS"/>
-
-               <desc name="params" vector_size="1"/>
-       </desc>
 </template>
 
 <template name="PointSize">
                <param name="stride" type="GLsizei"/>
                <param name="pointer" type="const GLvoid *"/>
        </proto>
-
-       <desc name="type">
-               <value name="GL_FLOAT"/>
-               <value name="GL_FIXED"/>
-       </desc>
 </template>
 
 <template name="Scissor">
                <return type="void"/>
                <param name="mode" type="GLenum"/>
        </proto>
-
-       <desc name="mode">
-               <value name="GL_FLAT"/>
-               <value name="GL_SMOOTH"/>
-       </desc>
 </template>
 
 <template name="TexParameter">
                        <param name="param" type="GLtype"/>
                </vector>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_TEXTURE_WRAP_S"/>
-               <value name="GL_TEXTURE_WRAP_T"/>
-               <value name="GL_TEXTURE_WRAP_R_OES" category="OES_texture_3D"/>
-
-               <desc name="param">
-                       <value name="GL_CLAMP_TO_EDGE"/>
-                       <value name="GL_REPEAT"/>
-                       <value name="GL_MIRRORED_REPEAT" category="GLES2.0"/>
-                       <value name="GL_MIRRORED_REPEAT_OES" category="OES_texture_mirrored_repeat"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_TEXTURE_MIN_FILTER"/>
-
-               <desc name="param">
-                       <value name="GL_NEAREST"/>
-                       <value name="GL_LINEAR"/>
-                       <value name="GL_NEAREST_MIPMAP_NEAREST"/>
-                       <value name="GL_NEAREST_MIPMAP_LINEAR"/>
-                       <value name="GL_LINEAR_MIPMAP_NEAREST"/>
-                       <value name="GL_LINEAR_MIPMAP_LINEAR"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_TEXTURE_MAG_FILTER"/>
-
-               <desc name="param">
-                       <value name="GL_NEAREST"/>
-                       <value name="GL_LINEAR"/>
-               </desc>
-       </desc>
-
-       <desc name="pname" category="GLES1.1">
-               <value name="GL_GENERATE_MIPMAP"/>
-
-               <desc name="param">
-                       <value name="GL_TRUE"/>
-                       <value name="GL_FALSE"/>
-               </desc>
-       </desc>
-
-       <desc name="pname" category="EXT_texture_filter_anisotropic">
-               <value name="GL_TEXTURE_MAX_ANISOTROPY_EXT"/>
-               <desc name="params" vector_size="1"/>
-       </desc>
-
-       <desc name="pname" category="OES_draw_texture">
-               <value name="GL_TEXTURE_CROP_RECT_OES"/>
-               <desc name="params" vector_size="4"/>
-       </desc>
 </template>
 
 <template name="TexImage2D">
                <param name="type" type="GLenum"/>
                <param name="pixels" type="const GLvoid *"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/>
-       </desc>
-
-       <desc name="internalFormat" error="GL_INVALID_VALUE">
-               <value name="GL_ALPHA"/>
-               <value name="GL_RGB"/>
-               <value name="GL_RGBA"/>
-               <value name="GL_BGRA_EXT"/>
-               <value name="GL_LUMINANCE"/>
-               <value name="GL_LUMINANCE_ALPHA"/>
-               <value name="GL_DEPTH_COMPONENT" category="OES_depth_texture"/>
-               <value name="GL_DEPTH_STENCIL_OES" category="OES_packed_depth_stencil"/>
-       </desc>
-
-       <desc name="border" error="GL_INVALID_VALUE">
-               <value name="0"/>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGB"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_5_6_5"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGBA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_4_4_4_4"/>
-                       <value name="GL_UNSIGNED_SHORT_5_5_5_1"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-                       <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" category="EXT_texture_type_2_10_10_10_REV"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format" category="OES_depth_texture">
-               <value name="GL_DEPTH_COMPONENT"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_SHORT"/>
-                       <value name="GL_UNSIGNED_INT"/>
-               </desc>
-       </desc>
-
-       <desc name="format" category="OES_packed_depth_stencil">
-               <value name="GL_DEPTH_STENCIL_OES"/>
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_INT_24_8_OES"/>
-               </desc>
-       </desc>
-
-       <desc name="format" category="EXT_texture_format_BGRA8888">
-               <value name="GL_BGRA_EXT"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-               </desc>
-       </desc>
 </template>
 
 <template name="TexEnv">
                        <param name="param" type="GLtype"/>
                </vector>
        </proto>
-
-       <desc name="target" category="OES_point_sprite">
-               <value name="GL_POINT_SPRITE_OES"/>
-
-               <desc name="pname">
-                       <value name="GL_COORD_REPLACE_OES"/>
-               </desc>
-       </desc>
-
-       <desc name="pname" category="OES_point_sprite">
-               <value name="GL_COORD_REPLACE_OES"/>
-
-               <desc name="param">
-                       <value name="GL_TRUE"/>
-                       <value name="GL_FALSE"/>
-               </desc>
-       </desc>
-
-       <desc name="target" category="EXT_texture_lod_bias">
-               <value name="GL_TEXTURE_FILTER_CONTROL_EXT"/>
-
-               <desc name="pname">
-                       <value name="GL_TEXTURE_LOD_BIAS_EXT"/>
-               </desc>
-       </desc>
-
-       <desc name="pname" category="EXT_texture_lod_bias">
-               <value name="GL_TEXTURE_LOD_BIAS_EXT"/>
-               <desc name="params" vector_size="1"/>
-       </desc>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_ENV"/>
-
-               <desc name="pname">
-                       <value name="GL_TEXTURE_ENV_MODE"/>
-                       <value name="GL_COMBINE_RGB"/>
-                       <value name="GL_COMBINE_ALPHA"/>
-                       <value name="GL_RGB_SCALE"/>
-                       <value name="GL_ALPHA_SCALE"/>
-                       <value name="GL_SRC0_RGB"/>
-                       <value name="GL_SRC1_RGB"/>
-                       <value name="GL_SRC2_RGB"/>
-                       <value name="GL_SRC0_ALPHA"/>
-                       <value name="GL_SRC1_ALPHA"/>
-                       <value name="GL_SRC2_ALPHA"/>
-                       <value name="GL_OPERAND0_RGB"/>
-                       <value name="GL_OPERAND1_RGB"/>
-                       <value name="GL_OPERAND2_RGB"/>
-                       <value name="GL_OPERAND0_ALPHA"/>
-                       <value name="GL_OPERAND1_ALPHA"/>
-                       <value name="GL_OPERAND2_ALPHA"/>
-                       <value name="GL_TEXTURE_ENV_COLOR"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_TEXTURE_ENV_MODE"/>
-
-               <desc name="param">
-                       <value name="GL_REPLACE"/>
-                       <value name="GL_MODULATE"/>
-                       <value name="GL_DECAL"/>
-                       <value name="GL_BLEND"/>
-                       <value name="GL_ADD"/>
-                       <value name="GL_COMBINE"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_COMBINE_RGB"/>
-
-               <desc name="param">
-                       <value name="GL_REPLACE"/>
-                       <value name="GL_MODULATE"/>
-                       <value name="GL_ADD"/>
-                       <value name="GL_ADD_SIGNED"/>
-                       <value name="GL_INTERPOLATE"/>
-                       <value name="GL_SUBTRACT"/>
-                       <value name="GL_DOT3_RGB"/>
-                       <value name="GL_DOT3_RGBA"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_COMBINE_ALPHA"/>
-
-               <desc name="param">
-                       <value name="GL_REPLACE"/>
-                       <value name="GL_MODULATE"/>
-                       <value name="GL_ADD"/>
-                       <value name="GL_ADD_SIGNED"/>
-                       <value name="GL_INTERPOLATE"/>
-                       <value name="GL_SUBTRACT"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_RGB_SCALE"/>
-               <value name="GL_ALPHA_SCALE"/>
-
-               <desc name="param" convert="true" error="GL_INVALID_VALUE">
-                       <value name="1.0"/>
-                       <value name="2.0"/>
-                       <value name="4.0"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_SRC0_RGB"/>
-               <value name="GL_SRC1_RGB"/>
-               <value name="GL_SRC2_RGB"/>
-               <value name="GL_SRC0_ALPHA"/>
-               <value name="GL_SRC1_ALPHA"/>
-               <value name="GL_SRC2_ALPHA"/>
-
-               <desc name="param">
-                       <value name="GL_TEXTURE"/>
-                       <value name="GL_CONSTANT"/>
-                       <value name="GL_PRIMARY_COLOR"/>
-                       <value name="GL_PREVIOUS"/>
-
-                       <range base="GL_TEXTURE" from="0" to="31" category="OES_texture_env_crossbar"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_OPERAND0_RGB"/>
-               <value name="GL_OPERAND1_RGB"/>
-               <value name="GL_OPERAND2_RGB"/>
-
-               <desc name="param">
-                       <value name="GL_SRC_COLOR"/>
-                       <value name="GL_ONE_MINUS_SRC_COLOR"/>
-                       <value name="GL_SRC_ALPHA"/>
-                       <value name="GL_ONE_MINUS_SRC_ALPHA"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_OPERAND0_ALPHA"/>
-               <value name="GL_OPERAND1_ALPHA"/>
-               <value name="GL_OPERAND2_ALPHA"/>
-
-               <desc name="param">
-                       <value name="GL_SRC_ALPHA"/>
-                       <value name="GL_ONE_MINUS_SRC_ALPHA"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_TEXTURE_ENV_COLOR"/>
-
-               <desc name="params" vector_size="4"/>
-       </desc>
 </template>
 
 <template name="TexGen">
                        <param name="param" type="GLtype"/>
                </vector>
        </proto>
-
-       <desc name="coord" category="OES_texture_cube_map">
-               <value name="GL_TEXTURE_GEN_STR_OES"/>
-       </desc>
-
-       <desc name="pname" category="OES_texture_cube_map">
-               <value name="GL_TEXTURE_GEN_MODE_OES"/>
-
-               <desc name="param">
-                       <value name="GL_NORMAL_MAP_OES"/>
-                       <value name="GL_REFLECTION_MAP_OES"/>
-               </desc>
-       </desc>
 </template>
 
 <template name="Clear">
                <return type="void"/>
                <param name="mask" type="GLbitfield"/>
        </proto>
-
-       <desc name="mask" error="GL_INVALID_VALUE">
-               <value name="0"/>
-               <value name="(GL_COLOR_BUFFER_BIT)"/>
-               <value name="(GL_DEPTH_BUFFER_BIT)"/>
-               <value name="(GL_STENCIL_BUFFER_BIT)"/>
-               <value name="(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)"/>
-               <value name="(GL_COLOR_BUFFER_BIT|GL_STENCIL_BUFFER_BIT)"/>
-               <value name="(GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT)"/>
-               <value name="(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT)"/>
-       </desc>
 </template>
 
 <template name="ClearColor">
                <param name="face" type="GLenum"/>
                <param name="mask" type="GLuint"/>
        </proto>
-
-       <desc name="face">
-               <value name="GL_FRONT"/>
-               <value name="GL_BACK"/>
-               <value name="GL_FRONT_AND_BACK"/>
-       </desc>
 </template>
 
 <template name="ColorMask">
                <return type="void"/>
                <param name="cap" type="GLenum"/>
        </proto>
-
-       <desc name="cap" category="GLES1.1">
-               <value name="GL_NORMALIZE"/>
-               <value name="GL_RESCALE_NORMAL"/>
-
-               <range base="GL_CLIP_PLANE" from="0" to="5"/>
-
-               <value name="GL_FOG"/>
-               <value name="GL_LIGHTING"/>
-               <value name="GL_COLOR_MATERIAL"/>
-
-               <range base="GL_LIGHT" from="0" to="7"/>
-
-               <value name="GL_POINT_SMOOTH"/>
-               <value name="GL_LINE_SMOOTH"/>
-               <value name="GL_CULL_FACE"/>
-               <value name="GL_POLYGON_OFFSET_FILL"/>
-               <value name="GL_MULTISAMPLE"/>
-               <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/>
-               <value name="GL_SAMPLE_ALPHA_TO_ONE"/>
-               <value name="GL_SAMPLE_COVERAGE"/>
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_SCISSOR_TEST"/>
-               <value name="GL_ALPHA_TEST"/>
-               <value name="GL_STENCIL_TEST"/>
-               <value name="GL_DEPTH_TEST"/>
-               <value name="GL_BLEND"/>
-               <value name="GL_DITHER"/>
-               <value name="GL_COLOR_LOGIC_OP"/>
-
-               <value name="GL_POINT_SPRITE_OES" category="OES_point_sprite"/>
-               <value name="GL_MATRIX_PALETTE_OES" category="OES_matrix_palette"/>
-               <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_GEN_STR_OES" category="OES_texture_cube_map"/>
-       </desc>
-
-       <desc name="cap" category="GLES2.0">
-               <value name="GL_CULL_FACE"/>
-               <value name="GL_SCISSOR_TEST"/>
-               <value name="GL_POLYGON_OFFSET_FILL"/>
-               <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/>
-               <value name="GL_SAMPLE_COVERAGE"/>
-               <value name="GL_STENCIL_TEST"/>
-               <value name="GL_DEPTH_TEST"/>
-               <value name="GL_DITHER"/>
-               <value name="GL_BLEND"/>
-       </desc>
 </template>
 
 <!-- it is exactly the same as Disable -->
                <return type="void"/>
                <param name="cap" type="GLenum"/>
        </proto>
-
-       <desc name="cap" category="GLES1.1">
-               <value name="GL_NORMALIZE"/>
-               <value name="GL_RESCALE_NORMAL"/>
-
-               <range base="GL_CLIP_PLANE" from="0" to="5"/>
-
-               <value name="GL_FOG"/>
-               <value name="GL_LIGHTING"/>
-               <value name="GL_COLOR_MATERIAL"/>
-
-               <range base="GL_LIGHT" from="0" to="7"/>
-
-               <value name="GL_POINT_SMOOTH"/>
-               <value name="GL_LINE_SMOOTH"/>
-               <value name="GL_CULL_FACE"/>
-               <value name="GL_POLYGON_OFFSET_FILL"/>
-               <value name="GL_MULTISAMPLE"/>
-               <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/>
-               <value name="GL_SAMPLE_ALPHA_TO_ONE"/>
-               <value name="GL_SAMPLE_COVERAGE"/>
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_SCISSOR_TEST"/>
-               <value name="GL_ALPHA_TEST"/>
-               <value name="GL_STENCIL_TEST"/>
-               <value name="GL_DEPTH_TEST"/>
-               <value name="GL_BLEND"/>
-               <value name="GL_DITHER"/>
-               <value name="GL_COLOR_LOGIC_OP"/>
-
-               <value name="GL_POINT_SPRITE_OES" category="OES_point_sprite"/>
-               <value name="GL_MATRIX_PALETTE_OES" category="OES_matrix_palette"/>
-               <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_GEN_STR_OES" category="OES_texture_cube_map"/>
-       </desc>
-
-       <desc name="cap" category="GLES2.0">
-               <value name="GL_CULL_FACE"/>
-               <value name="GL_SCISSOR_TEST"/>
-               <value name="GL_POLYGON_OFFSET_FILL"/>
-               <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/>
-               <value name="GL_SAMPLE_COVERAGE"/>
-               <value name="GL_STENCIL_TEST"/>
-               <value name="GL_DEPTH_TEST"/>
-               <value name="GL_DITHER"/>
-               <value name="GL_BLEND"/>
-       </desc>
 </template>
 
 <template name="Finish">
                <param name="func" type="GLenum"/>
                <param name="ref" type="GLtype"/>
        </proto>
-       <desc name="func">
-               <value name="GL_NEVER"/>
-               <value name="GL_LESS"/>
-               <value name="GL_EQUAL"/>
-               <value name="GL_LEQUAL"/>
-               <value name="GL_GREATER"/>
-               <value name="GL_NOTEQUAL"/>
-               <value name="GL_GEQUAL"/>
-               <value name="GL_ALWAYS"/>
-       </desc>
 </template>
 
 <template name="BlendFunc">
                <param name="sfactor" type="GLenum"/>
                <param name="dfactor" type="GLenum"/>
        </proto>
-
-       <desc name="sfactor">
-               <value name="GL_ZERO"/>
-               <value name="GL_ONE"/>
-               <value name="GL_SRC_COLOR"/>
-               <value name="GL_ONE_MINUS_SRC_COLOR"/>
-               <value name="GL_SRC_ALPHA"/>
-               <value name="GL_ONE_MINUS_SRC_ALPHA"/>
-               <value name="GL_DST_ALPHA"/>
-               <value name="GL_ONE_MINUS_DST_ALPHA"/>
-               <value name="GL_DST_COLOR"/>
-               <value name="GL_ONE_MINUS_DST_COLOR"/>
-               <value name="GL_SRC_ALPHA_SATURATE"/>
-
-               <value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
-       </desc>
-
-       <desc name="dfactor">
-               <value name="GL_ZERO"/>
-               <value name="GL_ONE"/>
-               <value name="GL_SRC_COLOR"/>
-               <value name="GL_ONE_MINUS_SRC_COLOR"/>
-               <value name="GL_SRC_ALPHA"/>
-               <value name="GL_ONE_MINUS_SRC_ALPHA"/>
-               <value name="GL_DST_ALPHA"/>
-               <value name="GL_ONE_MINUS_DST_ALPHA"/>
-               <value name="GL_DST_COLOR"/>
-               <value name="GL_ONE_MINUS_DST_COLOR"/>
-
-               <value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
-       </desc>
 </template>
 
 <template name="LogicOp">
                <return type="void"/>
                <param name="opcode" type="GLenum"/>
        </proto>
-
-       <desc name="opcode">
-               <value name="GL_CLEAR"/>
-               <value name="GL_SET"/>
-               <value name="GL_COPY"/>
-               <value name="GL_COPY_INVERTED"/>
-               <value name="GL_NOOP"/>
-               <value name="GL_INVERT"/>
-               <value name="GL_AND"/>
-               <value name="GL_NAND"/>
-               <value name="GL_OR"/>
-               <value name="GL_NOR"/>
-               <value name="GL_XOR"/>
-               <value name="GL_EQUIV"/>
-               <value name="GL_AND_REVERSE"/>
-               <value name="GL_AND_INVERTED"/>
-               <value name="GL_OR_REVERSE"/>
-               <value name="GL_OR_INVERTED"/>
-       </desc>
 </template>
 
 <template name="StencilFunc">
                <param name="ref" type="GLint"/>
                <param name="mask" type="GLuint"/>
        </proto>
-
-       <desc name="func">
-               <value name="GL_NEVER"/>
-               <value name="GL_LESS"/>
-               <value name="GL_LEQUAL"/>
-               <value name="GL_GREATER"/>
-               <value name="GL_GEQUAL"/>
-               <value name="GL_EQUAL"/>
-               <value name="GL_NOTEQUAL"/>
-               <value name="GL_ALWAYS"/>
-       </desc>
 </template>
 
 <template name="StencilFuncSeparate">
                <param name="ref" type="GLint"/>
                <param name="mask" type="GLuint"/>
        </proto>
-
-       <desc name="face">
-               <value name="GL_FRONT"/>
-               <value name="GL_BACK"/>
-               <value name="GL_FRONT_AND_BACK"/>
-       </desc>
-
-       <desc name="func">
-               <value name="GL_NEVER"/>
-               <value name="GL_LESS"/>
-               <value name="GL_LEQUAL"/>
-               <value name="GL_GREATER"/>
-               <value name="GL_GEQUAL"/>
-               <value name="GL_EQUAL"/>
-               <value name="GL_NOTEQUAL"/>
-               <value name="GL_ALWAYS"/>
-       </desc>
 </template>
 
 <template name="StencilOp">
                <param name="zfail" type="GLenum"/>
                <param name="zpass" type="GLenum"/>
        </proto>
-
-       <desc name="fail">
-               <value name="GL_KEEP"/>
-               <value name="GL_ZERO"/>
-               <value name="GL_REPLACE"/>
-               <value name="GL_INCR"/>
-               <value name="GL_DECR"/>
-               <value name="GL_INVERT"/>
-               <value name="GL_INCR_WRAP" category="GLES2.0"/>
-               <value name="GL_DECR_WRAP" category="GLES2.0"/>
-               <value name="GL_INCR_WRAP_OES" category="OES_stencil_wrap"/>
-               <value name="GL_DECR_WRAP_OES" category="OES_stencil_wrap"/>
-       </desc>
-
-       <desc name="zfail">
-               <value name="GL_KEEP"/>
-               <value name="GL_ZERO"/>
-               <value name="GL_REPLACE"/>
-               <value name="GL_INCR"/>
-               <value name="GL_DECR"/>
-               <value name="GL_INVERT"/>
-               <value name="GL_INCR_WRAP" category="GLES2.0"/>
-               <value name="GL_DECR_WRAP" category="GLES2.0"/>
-               <value name="GL_INCR_WRAP_OES" category="OES_stencil_wrap"/>
-               <value name="GL_DECR_WRAP_OES" category="OES_stencil_wrap"/>
-       </desc>
-
-       <desc name="zpass">
-               <value name="GL_KEEP"/>
-               <value name="GL_ZERO"/>
-               <value name="GL_REPLACE"/>
-               <value name="GL_INCR"/>
-               <value name="GL_DECR"/>
-               <value name="GL_INVERT"/>
-               <value name="GL_INCR_WRAP" category="GLES2.0"/>
-               <value name="GL_DECR_WRAP" category="GLES2.0"/>
-               <value name="GL_INCR_WRAP_OES" category="OES_stencil_wrap"/>
-               <value name="GL_DECR_WRAP_OES" category="OES_stencil_wrap"/>
-       </desc>
 </template>
 
 <template name="StencilOpSeparate">
                <param name="zfail" type="GLenum"/>
                <param name="zpass" type="GLenum"/>
        </proto>
-
-       <desc name="face">
-               <value name="GL_FRONT"/>
-               <value name="GL_BACK"/>
-               <value name="GL_FRONT_AND_BACK"/>
-       </desc>
-
-       <desc name="fail">
-               <value name="GL_KEEP"/>
-               <value name="GL_ZERO"/>
-               <value name="GL_REPLACE"/>
-               <value name="GL_INCR"/>
-               <value name="GL_DECR"/>
-               <value name="GL_INVERT"/>
-               <value name="GL_INCR_WRAP"/>
-               <value name="GL_DECR_WRAP"/>
-       </desc>
-
-       <desc name="zfail">
-               <value name="GL_KEEP"/>
-               <value name="GL_ZERO"/>
-               <value name="GL_REPLACE"/>
-               <value name="GL_INCR"/>
-               <value name="GL_DECR"/>
-               <value name="GL_INVERT"/>
-               <value name="GL_INCR_WRAP"/>
-               <value name="GL_DECR_WRAP"/>
-       </desc>
-
-       <desc name="zpass">
-               <value name="GL_KEEP"/>
-               <value name="GL_ZERO"/>
-               <value name="GL_REPLACE"/>
-               <value name="GL_INCR"/>
-               <value name="GL_DECR"/>
-               <value name="GL_INVERT"/>
-               <value name="GL_INCR_WRAP"/>
-               <value name="GL_DECR_WRAP"/>
-       </desc>
 </template>
 
 <template name="DepthFunc">
                <return type="void"/>
                <param name="func" type="GLenum"/>
        </proto>
-
-       <desc name="func">
-               <value name="GL_NEVER"/>
-               <value name="GL_LESS"/>
-               <value name="GL_EQUAL"/>
-               <value name="GL_LEQUAL"/>
-               <value name="GL_GREATER"/>
-               <value name="GL_NOTEQUAL"/>
-               <value name="GL_GEQUAL"/>
-               <value name="GL_ALWAYS"/>
-       </desc>
 </template>
 
 <template name="PixelStore">
                <param name="pname" type="GLenum"/>
                <param name="param" type="GLtype"/>
        </proto>
-
-       <desc name="pname">
-               <value name="GL_PACK_ALIGNMENT"/>
-               <value name="GL_UNPACK_ALIGNMENT"/>
-       </desc>
-
-       <desc name="param" error="GL_INVALID_VALUE">
-               <value name="1"/>
-               <value name="2"/>
-               <value name="4"/>
-               <value name="8"/>
-       </desc>
 </template>
 
 <template name="ReadPixels" direction="get">
                <param name="type" type="GLenum"/>
                <param name="pixels" type="GLvoid *"/>
        </proto>
-
-       <!-- Technically, only two combinations are actually allowed:
-            GL_RGBA/GL_UNSIGNED_BYTE, and some implementation-specific
-            internal preferred combination.  I don't know what that is, so I'm
-            allowing any valid combination for now; the underlying support
-            should fail when necessary.-->
-       <desc name="format">
-               <value name="GL_ALPHA"/>
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGB"/>
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_5_6_5"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGBA"/>
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_4_4_4_4"/>
-                       <value name="GL_UNSIGNED_SHORT_5_5_5_1"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE"/>
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE_ALPHA"/>
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-               </desc>
-       </desc>
-
-       <desc name="format" category="EXT_read_format_bgra">
-               <value name="GL_BGRA_EXT"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT"/>
-                       <value name="GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT"/>
-               </desc>
-       </desc>
 </template>
 
 <template name="GetClipPlane" direction="get">
                <param name="plane" type="GLenum"/>
                <vector name="equation" type="GLtype *" size="4"/>
        </proto>
-
-       <desc name="plane">
-               <range base="GL_CLIP_PLANE" from="0" to="5"/>
-       </desc>
 </template>
 
 <template name="GetError" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
-
-       <desc name="light">
-               <range base="GL_LIGHT" from="0" to="7"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_AMBIENT"/>
-               <value name="GL_DIFFUSE"/>
-               <value name="GL_SPECULAR"/>
-               <value name="GL_POSITION"/>
-
-               <desc name="params" vector_size="4"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_SPOT_DIRECTION"/>
-
-               <desc name="params" vector_size="3"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_SPOT_EXPONENT"/>
-               <value name="GL_SPOT_CUTOFF"/>
-               <value name="GL_CONSTANT_ATTENUATION"/>
-               <value name="GL_LINEAR_ATTENUATION"/>
-               <value name="GL_QUADRATIC_ATTENUATION"/>
-
-               <desc name="params" vector_size="1"/>
-       </desc>
 </template>
 
 <template name="GetMaterial" direction="get">
                        <param name="param" type="GLtype"/>
                </vector>
        </proto>
-
-       <desc name="face">
-               <value name="GL_FRONT"/>
-               <value name="GL_BACK"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_SHININESS"/>
-               <desc name="params" vector_size="1"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_AMBIENT"/>
-               <value name="GL_DIFFUSE"/>
-               <value name="GL_AMBIENT_AND_DIFFUSE"/>
-               <value name="GL_SPECULAR"/>
-               <value name="GL_EMISSION"/>
-
-               <desc name="params" vector_size="4"/>
-       </desc>
 </template>
 
 <template name="GetString" direction="get">
                <return type="const GLubyte *"/>
                <param name="name" type="GLenum"/>
        </proto>
-
-       <desc name="name">
-               <value name="GL_VENDOR"/>
-               <value name="GL_RENDERER"/>
-               <value name="GL_VERSION"/>
-               <value name="GL_EXTENSIONS"/>
-               <value name="GL_SHADING_LANGUAGE_VERSION" category="GLES2.0"/>
-       </desc>
 </template>
 
 <template name="GetTexEnv" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
-
-       <desc name="target" category="OES_point_sprite">
-               <value name="GL_POINT_SPRITE_OES"/>
-               <desc name="pname">
-                       <value name="GL_COORD_REPLACE_OES"/>
-               </desc>
-       </desc>
-
-       <desc name="pname" category="OES_point_sprite">
-               <value name="GL_COORD_REPLACE_OES"/>
-               <desc name="params" vector_size="1" convert="false"/>
-       </desc>
-
-       <desc name="target" category="EXT_texture_lod_bias">
-               <value name="GL_TEXTURE_FILTER_CONTROL_EXT"/>
-
-               <desc name="pname">
-                       <value name="GL_TEXTURE_LOD_BIAS_EXT"/>
-               </desc>
-       </desc>
-
-       <desc name="pname" category="EXT_texture_lod_bias">
-               <value name="GL_TEXTURE_LOD_BIAS_EXT"/>
-               <desc name="params" vector_size="1"/>
-       </desc>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_ENV"/>
-
-               <desc name="pname">
-                       <value name="GL_TEXTURE_ENV_COLOR"/>
-                       <value name="GL_RGB_SCALE"/>
-                       <value name="GL_ALPHA_SCALE"/>
-                       <value name="GL_TEXTURE_ENV_MODE"/>
-                       <value name="GL_COMBINE_RGB"/>
-                       <value name="GL_COMBINE_ALPHA"/>
-                       <value name="GL_SRC0_RGB"/>
-                       <value name="GL_SRC1_RGB"/>
-                       <value name="GL_SRC2_RGB"/>
-                       <value name="GL_SRC0_ALPHA"/>
-                       <value name="GL_SRC1_ALPHA"/>
-                       <value name="GL_SRC2_ALPHA"/>
-                       <value name="GL_OPERAND0_RGB"/>
-                       <value name="GL_OPERAND1_RGB"/>
-                       <value name="GL_OPERAND2_RGB"/>
-                       <value name="GL_OPERAND0_ALPHA"/>
-                       <value name="GL_OPERAND1_ALPHA"/>
-                       <value name="GL_OPERAND2_ALPHA"/>
-               </desc>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_TEXTURE_ENV_COLOR"/>
-               <desc name="params" vector_size="4"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_RGB_SCALE"/>
-               <value name="GL_ALPHA_SCALE"/>
-
-               <desc name="params" vector_size="1"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_TEXTURE_ENV_MODE"/>
-               <value name="GL_COMBINE_RGB"/>
-               <value name="GL_COMBINE_ALPHA"/>
-               <value name="GL_SRC0_RGB"/>
-               <value name="GL_SRC1_RGB"/>
-               <value name="GL_SRC2_RGB"/>
-               <value name="GL_SRC0_ALPHA"/>
-               <value name="GL_SRC1_ALPHA"/>
-               <value name="GL_SRC2_ALPHA"/>
-               <value name="GL_OPERAND0_RGB"/>
-               <value name="GL_OPERAND1_RGB"/>
-               <value name="GL_OPERAND2_RGB"/>
-               <value name="GL_OPERAND0_ALPHA"/>
-               <value name="GL_OPERAND1_ALPHA"/>
-               <value name="GL_OPERAND2_ALPHA"/>
-
-               <desc name="params" vector_size="1" convert="false"/>
-       </desc>
 </template>
 
 <template name="GetTexGen" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
-
-       <desc name="coord">
-               <value name="GL_TEXTURE_GEN_STR_OES"/>
-       </desc>
-       <desc name="pname">
-               <value name="GL_TEXTURE_GEN_MODE_OES"/>
-               <desc name="params" vector_size="1" convert="false"/>
-       </desc>
 </template>
 
 <template name="GetTexParameter" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_TEXTURE_WRAP_S"/>
-               <value name="GL_TEXTURE_WRAP_T"/>
-               <value name="GL_TEXTURE_WRAP_R_OES" category="OES_texture_3D"/>
-               <value name="GL_TEXTURE_MIN_FILTER"/>
-               <value name="GL_TEXTURE_MAG_FILTER"/>
-               <value name="GL_GENERATE_MIPMAP" category="GLES1.1"/>
-
-               <desc name="params" vector_size="1" convert="false"/>
-       </desc>
-
-       <desc name="pname" category="OES_draw_texture">
-               <value name="GL_TEXTURE_CROP_RECT_OES"/>
-               <desc name="params" vector_size="4"/>
-       </desc>
 </template>
 
 <template name="IsEnabled" direction="get">
                <return type="GLboolean"/>
                <param name="cap" type="GLenum"/>
        </proto>
-
-       <desc name="cap" category="GLES1.1">
-               <value name="GL_NORMALIZE"/>
-               <value name="GL_RESCALE_NORMAL"/>
-
-               <range base="GL_CLIP_PLANE" from="0" to="5"/>
-
-               <value name="GL_FOG"/>
-               <value name="GL_LIGHTING"/>
-               <value name="GL_COLOR_MATERIAL"/>
-
-               <range base="GL_LIGHT" from="0" to="7"/>
-
-               <value name="GL_POINT_SMOOTH"/>
-               <value name="GL_LINE_SMOOTH"/>
-               <value name="GL_CULL_FACE"/>
-               <value name="GL_POLYGON_OFFSET_FILL"/>
-               <value name="GL_MULTISAMPLE"/>
-               <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/>
-               <value name="GL_SAMPLE_ALPHA_TO_ONE"/>
-               <value name="GL_SAMPLE_COVERAGE"/>
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_SCISSOR_TEST"/>
-               <value name="GL_ALPHA_TEST"/>
-               <value name="GL_STENCIL_TEST"/>
-               <value name="GL_DEPTH_TEST"/>
-               <value name="GL_BLEND"/>
-               <value name="GL_DITHER"/>
-               <value name="GL_COLOR_LOGIC_OP"/>
-
-               <value name="GL_POINT_SPRITE_OES" category="OES_point_sprite"/>
-               <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_GEN_STR_OES" category="OES_texture_cube_map"/>
-
-               <value name="GL_VERTEX_ARRAY"/>
-               <value name="GL_NORMAL_ARRAY"/>
-               <value name="GL_COLOR_ARRAY"/>
-               <value name="GL_TEXTURE_COORD_ARRAY"/>
-               <value name="GL_MATRIX_INDEX_ARRAY_OES" category="OES_matrix_palette"/>
-               <value name="GL_WEIGHT_ARRAY_OES" category="OES_matrix_palette"/>
-               <value name="GL_POINT_SIZE_ARRAY_OES" category="OES_point_size_array"/>
-       </desc>
-
-       <desc name="cap" category="GLES2.0">
-               <value name="GL_CULL_FACE"/>
-               <value name="GL_SCISSOR_TEST"/>
-               <value name="GL_POLYGON_OFFSET_FILL"/>
-               <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/>
-               <value name="GL_SAMPLE_COVERAGE"/>
-               <value name="GL_STENCIL_TEST"/>
-               <value name="GL_DEPTH_TEST"/>
-               <value name="GL_DITHER"/>
-               <value name="GL_BLEND"/>
-       </desc>
 </template>
 
 <template name="DepthRange">
                <return type="void"/>
                <param name="mode" type="GLenum"/>
        </proto>
-
-       <desc name="mode">
-               <value name="GL_MODELVIEW"/>
-               <value name="GL_PROJECTION"/>
-               <value name="GL_TEXTURE"/>
-               <value name="GL_MATRIX_PALETTE_OES" category="OES_matrix_palette"/>
-       </desc>
 </template>
 
 <template name="MultMatrix">
                <param name="stride" type="GLsizei"/>
                <param name="pointer" type="const GLvoid *"/>
        </proto>
-
-       <desc name="size" error="GL_INVALID_VALUE">
-               <value name="4"/>
-       </desc>
-
-       <desc name="type">
-               <value name="GL_UNSIGNED_BYTE"/>
-               <value name="GL_FLOAT"/>
-               <value name="GL_FIXED"/>
-               <value name="GL_HALF_FLOAT_OES" category="OES_vertex_half_float"/>
-       </desc>
 </template>
 
 <template name="DisableClientState">
                <return type="void"/>
                <param name="array" type="GLenum"/>
        </proto>
-
-       <desc name="array">
-               <value name="GL_VERTEX_ARRAY"/>
-               <value name="GL_NORMAL_ARRAY"/>
-               <value name="GL_COLOR_ARRAY"/>
-               <value name="GL_TEXTURE_COORD_ARRAY"/>
-               <value name="GL_MATRIX_INDEX_ARRAY_OES" category="OES_matrix_palette"/>
-               <value name="GL_WEIGHT_ARRAY_OES" category="OES_matrix_palette"/>
-               <value name="GL_POINT_SIZE_ARRAY_OES" category="OES_point_size_array"/>
-       </desc>
 </template>
 
 <template name="DrawArrays">
                <param name="first" type="GLint"/>
                <param name="count" type="GLsizei"/>
        </proto>
-
-       <desc name="mode">
-               <value name="GL_POINTS"/>
-               <value name="GL_LINES"/>
-               <value name="GL_LINE_LOOP"/>
-               <value name="GL_LINE_STRIP"/>
-               <value name="GL_TRIANGLES"/>
-               <value name="GL_TRIANGLE_STRIP"/>
-               <value name="GL_TRIANGLE_FAN"/>
-       </desc>
 </template>
 
 <template name="DrawElements">
                <param name="type" type="GLenum"/>
                <param name="indices" type="const GLvoid *"/>
        </proto>
-
-       <desc name="mode">
-               <value name="GL_POINTS"/>
-               <value name="GL_LINES"/>
-               <value name="GL_LINE_LOOP"/>
-               <value name="GL_LINE_STRIP"/>
-               <value name="GL_TRIANGLES"/>
-               <value name="GL_TRIANGLE_STRIP"/>
-               <value name="GL_TRIANGLE_FAN"/>
-       </desc>
-
-       <desc name="type">
-               <value name="GL_UNSIGNED_BYTE"/>
-               <value name="GL_UNSIGNED_SHORT"/>
-               <value name="GL_UNSIGNED_INT" category="OES_element_index_uint"/>
-       </desc>
 </template>
 
 <template name="EnableClientState">
                <return type="void"/>
                <param name="array" type="GLenum"/>
        </proto>
-
-       <desc name="array">
-               <value name="GL_VERTEX_ARRAY"/>
-               <value name="GL_NORMAL_ARRAY"/>
-               <value name="GL_COLOR_ARRAY"/>
-               <value name="GL_TEXTURE_COORD_ARRAY"/>
-               <value name="GL_MATRIX_INDEX_ARRAY_OES" category="OES_matrix_palette"/>
-               <value name="GL_WEIGHT_ARRAY_OES" category="OES_matrix_palette"/>
-               <value name="GL_POINT_SIZE_ARRAY_OES" category="OES_point_size_array"/>
-       </desc>
 </template>
 
 <template name="GetPointer" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLvoid **" size="dynamic"/>
        </proto>
-
-       <desc name="pname">
-               <value name="GL_VERTEX_ARRAY_POINTER"/>
-               <value name="GL_NORMAL_ARRAY_POINTER"/>
-               <value name="GL_COLOR_ARRAY_POINTER"/>
-               <value name="GL_TEXTURE_COORD_ARRAY_POINTER"/>
-               <value name="GL_MATRIX_INDEX_ARRAY_POINTER_OES" category="OES_matrix_palette"/>
-               <value name="GL_WEIGHT_ARRAY_POINTER_OES" category="OES_matrix_palette"/>
-               <value name="GL_POINT_SIZE_ARRAY_POINTER_OES" category="OES_point_size_array"/>
-       </desc>
 </template>
 
 <template name="Normal">
                <param name="stride" type="GLsizei"/>
                <param name="pointer" type="const GLvoid *"/>
        </proto>
-
-       <desc name="type">
-               <value name="GL_BYTE"/>
-               <value name="GL_SHORT"/>
-               <value name="GL_FLOAT"/>
-               <value name="GL_FIXED"/>
-               <value name="GL_HALF_FLOAT_OES" category="OES_vertex_half_float"/>
-       </desc>
 </template>
 
 <template name="TexCoordPointer">
                <param name="stride" type="GLsizei"/>
                <param name="pointer" type="const GLvoid *"/>
        </proto>
-
-       <desc name="size" error="GL_INVALID_VALUE">
-               <value name="2"/>
-               <value name="3"/>
-               <value name="4"/>
-       </desc>
-
-       <desc name="type">
-               <value name="GL_BYTE"/>
-               <value name="GL_SHORT"/>
-               <value name="GL_FLOAT"/>
-               <value name="GL_FIXED"/>
-               <value name="GL_HALF_FLOAT_OES" category="OES_vertex_half_float"/>
-       </desc>
 </template>
 
 <template name="VertexPointer">
                <param name="stride" type="GLsizei"/>
                <param name="pointer" type="const GLvoid *"/>
        </proto>
-
-       <desc name="size" error="GL_INVALID_VALUE">
-               <value name="2"/>
-               <value name="3"/>
-               <value name="4"/>
-       </desc>
-
-       <desc name="type">
-               <value name="GL_BYTE"/>
-               <value name="GL_SHORT"/>
-               <value name="GL_FLOAT"/>
-               <value name="GL_FIXED"/>
-               <value name="GL_HALF_FLOAT_OES" category="OES_vertex_half_float"/>
-       </desc>
 </template>
 
 <template name="PolygonOffset">
                <param name="height" type="GLsizei"/>
                <param name="border" type="GLint"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/>
-       </desc>
-
-       <desc name="internalFormat" error="GL_INVALID_VALUE">
-               <value name="GL_ALPHA"/>
-               <value name="GL_RGB"/>
-               <value name="GL_RGBA"/>
-               <value name="GL_LUMINANCE"/>
-               <value name="GL_LUMINANCE_ALPHA"/>
-       </desc>
-
-       <desc name="border" error="GL_INVALID_VALUE">
-               <value name="0"/>
-       </desc>
 </template>
 
 <template name="CopyTexSubImage2D">
                <param name="width" type="GLsizei"/>
                <param name="height" type="GLsizei"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/>
-       </desc>
 </template>
 
 <template name="TexSubImage2D">
                <param name="type" type="GLenum"/>
                <param name="pixels" type="const GLvoid *"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGB"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_5_6_5"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGBA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_4_4_4_4"/>
-                       <value name="GL_UNSIGNED_SHORT_5_5_5_1"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-                       <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" category="EXT_texture_type_2_10_10_10_REV"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format" category="OES_depth_texture">
-               <value name="GL_DEPTH_COMPONENT"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_SHORT"/>
-                       <value name="GL_UNSIGNED_INT"/>
-               </desc>
-       </desc>
-
-       <desc name="format" category="OES_packed_depth_stencil">
-               <value name="GL_DEPTH_STENCIL_OES"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_INT_24_8_OES"/>
-               </desc>
-       </desc>
-
-       <desc name="format" category="EXT_texture_format_BGRA8888">
-               <value name="GL_BGRA_EXT"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-               </desc>
-       </desc>
 </template>
 
 <template name="BindTexture">
                <param name="target" type="GLenum"/>
                <param name="texture" type="GLuint"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/>
-       </desc>
 </template>
 
 <template name="DeleteTextures">
                <return type="void"/>
                <param name="mode" type="GLenum"/>
        </proto>
-
-       <desc name="mode">
-               <value name="GL_FUNC_ADD" category="GLES2.0"/>
-               <value name="GL_FUNC_SUBTRACT" category="GLES2.0"/>
-               <value name="GL_FUNC_REVERSE_SUBTRACT" category="GLES2.0"/>
-               <value name="GL_FUNC_ADD_OES" category="OES_blend_subtract"/>
-               <value name="GL_FUNC_SUBTRACT_OES" category="OES_blend_subtract"/>
-               <value name="GL_FUNC_REVERSE_SUBTRACT_OES" category="OES_blend_subtract"/>
-
-               <value name="GL_MIN_EXT" category="EXT_blend_minmax"/>
-               <value name="GL_MAX_EXT" category="EXT_blend_minmax"/>
-       </desc>
 </template>
 
 <template name="BlendEquationSeparate">
                <param name="modeRGB" type="GLenum"/>
                <param name="modeAlpha" type="GLenum"/>
        </proto>
-
-       <desc name="modeRGB">
-               <value name="GL_FUNC_ADD" category="GLES2.0"/>
-               <value name="GL_FUNC_SUBTRACT" category="GLES2.0"/>
-               <value name="GL_FUNC_REVERSE_SUBTRACT" category="GLES2.0"/>
-               <value name="GL_FUNC_ADD_OES" category="OES_blend_subtract"/>
-               <value name="GL_FUNC_SUBTRACT_OES" category="OES_blend_subtract"/>
-               <value name="GL_FUNC_REVERSE_SUBTRACT_OES" category="OES_blend_subtract"/>
-
-               <value name="GL_MIN_EXT" category="EXT_blend_minmax"/>
-               <value name="GL_MAX_EXT" category="EXT_blend_minmax"/>
-       </desc>
-
-       <desc name="modeAlpha">
-               <value name="GL_FUNC_ADD" category="GLES2.0"/>
-               <value name="GL_FUNC_SUBTRACT" category="GLES2.0"/>
-               <value name="GL_FUNC_REVERSE_SUBTRACT" category="GLES2.0"/>
-               <value name="GL_FUNC_ADD_OES" category="OES_blend_subtract"/>
-               <value name="GL_FUNC_SUBTRACT_OES" category="OES_blend_subtract"/>
-               <value name="GL_FUNC_REVERSE_SUBTRACT_OES" category="OES_blend_subtract"/>
-
-               <value name="GL_MIN_EXT" category="EXT_blend_minmax"/>
-               <value name="GL_MAX_EXT" category="EXT_blend_minmax"/>
-       </desc>
 </template>
 
 <template name="TexImage3D">
                <param name="pixels" type="const GLvoid *"/>
        </proto>
 
-       <desc name="target">
-               <value name="GL_TEXTURE_3D_OES"/>
-       </desc>
-
-       <desc name="internalFormat">
-               <value name="GL_ALPHA"/>
-               <value name="GL_RGB"/>
-               <value name="GL_RGBA"/>
-               <value name="GL_LUMINANCE"/>
-               <value name="GL_LUMINANCE_ALPHA"/>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGB"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_5_6_5"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGBA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_4_4_4_4"/>
-                       <value name="GL_UNSIGNED_SHORT_5_5_5_1"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-                       <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" category="EXT_texture_type_2_10_10_10_REV"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
 </template>
 
 <template name="TexSubImage3D">
                <param name="type" type="GLenum"/>
                <param name="pixels" type="const GLvoid *"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_3D_OES"/>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGB"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_5_6_5"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGBA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_4_4_4_4"/>
-                       <value name="GL_UNSIGNED_SHORT_5_5_5_1"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-                       <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" category="EXT_texture_type_2_10_10_10_REV"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/>
-               </desc>
-       </desc>
 </template>
 
 <template name="CopyTexSubImage3D">
                <param name="width" type="GLsizei"/>
                <param name="height" type="GLsizei"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_3D_OES"/>
-       </desc>
 </template>
 
 <template name="MultiTexCoord">
                        <param name="q" type="GLtype"/>
                </vector>
        </proto>
-
-       <desc name="texture">
-               <range base="GL_TEXTURE" from="0" to="31"/>
-       </desc>
 </template>
 
 <template name="CompressedTexImage3D">
                <param name="imagesize" type="GLsizei"/>
                <param name="data" type="const GLvoid *"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_3D_OES"/>
-       </desc>
-
-       <desc name="internalFormat">
-               <value name="GL_3DC_X_AMD" category="AMD_compressed_3DC_texture"/>
-               <value name="GL_3DC_XY_AMD" category="AMD_compressed_3DC_texture"/>
-               <value name="GL_ATC_RGB_AMD" category="AMD_compressed_ATC_texture"/>
-               <value name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD" category="AMD_compressed_ATC_texture"/>
-               <value name="GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD" category="AMD_compressed_ATC_texture"/>
-       </desc>
 </template>
 
 <template name="CompressedTexSubImage3D">
                <param name="imagesize" type="GLsizei"/>
                <param name="data" type="const GLvoid *"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_3D_OES"/>
-       </desc>
 </template>
 
 <template name="ActiveTexture">
                <return type="void"/>
                <param name="texture" type="GLenum"/>
        </proto>
-
-       <desc name="texture">
-               <range base="GL_TEXTURE" from="0" to="31"/>
-       </desc>
 </template>
 
 <template name="ClientActiveTexture">
                <return type="void"/>
                <param name="texture" type="GLenum"/>
        </proto>
-
-       <desc name="texture">
-               <range base="GL_TEXTURE" from="0" to="31"/>
-       </desc>
 </template>
 
 <template name="SampleCoverage">
                <param name="imageSize" type="GLsizei"/>
                <param name="data" type="const GLvoid *"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/>
-       </desc>
-
-       <desc name="internalFormat">
-               <value name="GL_ETC1_RGB8_OES" category="OES_compressed_ETC1_RGB8_texture"/>
-
-               <value name="GL_PALETTE4_RGB8_OES" category="OES_compressed_paletted_texture"/>
-               <value name="GL_PALETTE4_RGBA8_OES" category="OES_compressed_paletted_texture"/>
-               <value name="GL_PALETTE4_R5_G6_B5_OES" category="OES_compressed_paletted_texture"/>
-               <value name="GL_PALETTE4_RGBA4_OES" category="OES_compressed_paletted_texture"/>
-               <value name="GL_PALETTE4_RGB5_A1_OES" category="OES_compressed_paletted_texture"/>
-               <value name="GL_PALETTE8_RGB8_OES" category="OES_compressed_paletted_texture"/>
-               <value name="GL_PALETTE8_RGBA8_OES" category="OES_compressed_paletted_texture"/>
-               <value name="GL_PALETTE8_R5_G6_B5_OES" category="OES_compressed_paletted_texture"/>
-               <value name="GL_PALETTE8_RGBA4_OES" category="OES_compressed_paletted_texture"/>
-               <value name="GL_PALETTE8_RGB5_A1_OES" category="OES_compressed_paletted_texture"/>
-
-               <value name="GL_3DC_X_AMD" category="AMD_compressed_3DC_texture"/>
-               <value name="GL_3DC_XY_AMD" category="AMD_compressed_3DC_texture"/>
-
-               <value name="GL_ATC_RGB_AMD" category="AMD_compressed_ATC_texture"/>
-               <value name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD" category="AMD_compressed_ATC_texture"/>
-               <value name="GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD" category="AMD_compressed_ATC_texture"/>
-
-               <value name="GL_COMPRESSED_RGB_S3TC_DXT1_EXT" category="EXT_texture_compression_dxt1"/>
-               <value name="GL_COMPRESSED_RGBA_S3TC_DXT1_EXT" category="EXT_texture_compression_dxt1"/>
-       </desc>
-
-       <desc name="border" error="GL_INVALID_VALUE">
-               <value name="0"/>
-       </desc>
 </template>
 
 <template name="CompressedTexSubImage2D">
                <param name="imageSize" type="GLsizei"/>
                <param name="data" type="const GLvoid *"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_COMPRESSED_RGB_S3TC_DXT1_EXT" category="EXT_texture_compression_dxt1"/>
-               <value name="GL_COMPRESSED_RGBA_S3TC_DXT1_EXT" category="EXT_texture_compression_dxt1"/>
-       </desc>
 </template>
 
 <template name="BlendFuncSeparate">
                <param name="srcAlpha" type="GLenum"/>
                <param name="dstAlpha" type="GLenum"/>
        </proto>
-
-       <desc name="srcRGB">
-               <value name="GL_ZERO"/>
-               <value name="GL_ONE"/>
-               <value name="GL_SRC_COLOR"/>
-               <value name="GL_ONE_MINUS_SRC_COLOR"/>
-               <value name="GL_SRC_ALPHA"/>
-               <value name="GL_ONE_MINUS_SRC_ALPHA"/>
-               <value name="GL_DST_ALPHA"/>
-               <value name="GL_ONE_MINUS_DST_ALPHA"/>
-               <value name="GL_DST_COLOR"/>
-               <value name="GL_ONE_MINUS_DST_COLOR"/>
-               <value name="GL_SRC_ALPHA_SATURATE"/>
-
-               <value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
-       </desc>
-
-       <desc name="dstRGB">
-               <value name="GL_ZERO"/>
-               <value name="GL_ONE"/>
-               <value name="GL_SRC_COLOR"/>
-               <value name="GL_ONE_MINUS_SRC_COLOR"/>
-               <value name="GL_SRC_ALPHA"/>
-               <value name="GL_ONE_MINUS_SRC_ALPHA"/>
-               <value name="GL_DST_ALPHA"/>
-               <value name="GL_ONE_MINUS_DST_ALPHA"/>
-               <value name="GL_DST_COLOR"/>
-               <value name="GL_ONE_MINUS_DST_COLOR"/>
-
-               <value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
-       </desc>
-
-       <desc name="srcAlpha">
-               <value name="GL_ZERO"/>
-               <value name="GL_ONE"/>
-               <value name="GL_SRC_COLOR"/>
-               <value name="GL_ONE_MINUS_SRC_COLOR"/>
-               <value name="GL_SRC_ALPHA"/>
-               <value name="GL_ONE_MINUS_SRC_ALPHA"/>
-               <value name="GL_DST_ALPHA"/>
-               <value name="GL_ONE_MINUS_DST_ALPHA"/>
-               <value name="GL_DST_COLOR"/>
-               <value name="GL_ONE_MINUS_DST_COLOR"/>
-               <value name="GL_SRC_ALPHA_SATURATE"/>
-
-               <value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
-       </desc>
-
-       <desc name="dstAlpha">
-               <value name="GL_ZERO"/>
-               <value name="GL_ONE"/>
-               <value name="GL_SRC_COLOR"/>
-               <value name="GL_ONE_MINUS_SRC_COLOR"/>
-               <value name="GL_SRC_ALPHA"/>
-               <value name="GL_ONE_MINUS_SRC_ALPHA"/>
-               <value name="GL_DST_ALPHA"/>
-               <value name="GL_ONE_MINUS_DST_ALPHA"/>
-               <value name="GL_DST_COLOR"/>
-               <value name="GL_ONE_MINUS_DST_COLOR"/>
-
-               <value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
-               <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
-               <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
-       </desc>
 </template>
 
 <template name="PointParameter">
                        <param name="param" type="GLtype"/>
                </vector>
        </proto>
-
-       <desc name="pname">
-               <value name="GL_POINT_SIZE_MIN"/>
-               <value name="GL_POINT_SIZE_MAX"/>
-               <value name="GL_POINT_FADE_THRESHOLD_SIZE"/>
-
-               <desc name="params" vector_size="1"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_POINT_DISTANCE_ATTENUATION"/>
-               <desc name="params" vector_size="3"/>
-       </desc>
 </template>
 
 <template name="VertexAttrib">
                <param name="stride" type="GLsizei"/>
                <param name="pointer" type="const GLvoid *"/>
        </proto>
-
-       <desc name="size" error="GL_INVALID_VALUE">
-               <value name="1"/>
-               <value name="2"/>
-               <value name="3"/>
-               <value name="4"/>
-       </desc>
-
-       <desc name="type" error="GL_INVALID_VALUE">
-               <value name="GL_BYTE"/>
-               <value name="GL_UNSIGNED_BYTE"/>
-               <value name="GL_SHORT"/>
-               <value name="GL_UNSIGNED_SHORT"/>
-               <value name="GL_FLOAT"/>
-               <value name="GL_FIXED"/>
-               <value name="GL_HALF_FLOAT_OES" category="OES_vertex_half_float"/>
-               <value name="GL_UNSIGNED_INT_10_10_10_2_OES" category="OES_vertex_type_10_10_10_2"/>
-               <value name="GL_INT_10_10_10_2_OES" category="OES_vertex_type_10_10_10_2"/>
-       </desc>
-
-       <desc name="type" category="OES_vertex_type_10_10_10_2">
-               <value name="GL_UNSIGNED_INT_10_10_10_2_OES"/>
-               <value name="GL_INT_10_10_10_2_OES"/>
-
-               <desc name="size">
-                       <value name="3"/>
-                       <value name="4"/>
-               </desc>
-       </desc>
 </template>
 
 <template name="EnableVertexAttribArray">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
-
-       <desc name="pname">
-               <value name="GL_DELETE_STATUS"/>
-               <value name="GL_LINK_STATUS"/>
-               <value name="GL_VALIDATE_STATUS"/>
-               <value name="GL_INFO_LOG_LENGTH"/>
-               <value name="GL_ATTACHED_SHADERS"/>
-               <value name="GL_ACTIVE_ATTRIBUTES"/>
-               <value name="GL_ACTIVE_ATTRIBUTE_MAX_LENGTH"/>
-               <value name="GL_ACTIVE_UNIFORMS"/>
-               <value name="GL_ACTIVE_UNIFORM_MAX_LENGTH"/>
-               <value name="GL_PROGRAM_BINARY_LENGTH_OES" category="OES_get_program_binary"/>
-
-               <desc name="params" convert="false"/>
-       </desc>
 </template>
 
 <template name="GetVertexAttrib" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
-
-       <desc name="pname">
-               <value name="GL_VERTEX_ATTRIB_ARRAY_ENABLED"/>
-               <value name="GL_VERTEX_ATTRIB_ARRAY_SIZE"/>
-               <value name="GL_VERTEX_ATTRIB_ARRAY_STRIDE"/>
-               <value name="GL_VERTEX_ATTRIB_ARRAY_TYPE"/>
-               <value name="GL_VERTEX_ATTRIB_ARRAY_NORMALIZED"/>
-               <value name="GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"/>
-
-               <desc name="params" vector_size="1" convert="false"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_CURRENT_VERTEX_ATTRIB"/>
-               <desc name="params" vector_size="16?" convert="false"/>
-       </desc>
 </template>
 
 <template name="GetVertexAttribPointer" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="pointer" type="GLvoid **" size="dynamic"/>
        </proto>
-
-       <desc name="pname">
-               <value name="GL_VERTEX_ATTRIB_ARRAY_POINTER"/>
-       </desc>
 </template>
 
 <template name="GetBufferPointer" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLvoid **" size="dynamic"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_ARRAY_BUFFER"/>
-               <value name="GL_ELEMENT_ARRAY_BUFFER"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_BUFFER_MAP_POINTER_OES"/>
-       </desc>
 </template>
 
 <template name="MapBuffer" direction="get">
                <param name="target" type="GLenum"/>
                <param name="access" type="GLenum"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_ARRAY_BUFFER"/>
-               <value name="GL_ELEMENT_ARRAY_BUFFER"/>
-       </desc>
-
-       <desc name="access">
-               <value name="GL_WRITE_ONLY_OES"/>
-       </desc>
 </template>
 
 <template name="UnmapBuffer" direction="get">
                <return type="GLboolean"/>
                <param name="target" type="GLenum"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_ARRAY_BUFFER"/>
-               <value name="GL_ELEMENT_ARRAY_BUFFER"/>
-       </desc>
 </template>
 
 <template name="BindBuffer">
                <param name="target" type="GLenum"/>
                <param name="buffer" type="GLuint"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_ARRAY_BUFFER"/>
-               <value name="GL_ELEMENT_ARRAY_BUFFER"/>
-       </desc>
 </template>
 
 <template name="BufferData">
                <param name="data" type="const GLvoid *"/>
                <param name="usage" type="GLenum"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_ARRAY_BUFFER"/>
-               <value name="GL_ELEMENT_ARRAY_BUFFER"/>
-       </desc>
-
-       <desc name="usage">
-               <value name="GL_STATIC_DRAW"/>
-               <value name="GL_DYNAMIC_DRAW"/>
-               <value name="GL_STREAM_DRAW" category="GLES2.0"/>
-       </desc>
 </template>
 
 <template name="BufferSubData">
                <param name="size" type="GLsizeiptr"/>
                <param name="data" type="const GLvoid *"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_ARRAY_BUFFER"/>
-               <value name="GL_ELEMENT_ARRAY_BUFFER"/>
-       </desc>
 </template>
 
 <template name="DeleteBuffers">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_ARRAY_BUFFER"/>
-               <value name="GL_ELEMENT_ARRAY_BUFFER"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_BUFFER_SIZE"/>
-               <value name="GL_BUFFER_USAGE"/>
-               <value name="GL_BUFFER_ACCESS_OES" category="OES_mapbuffer"/>
-               <value name="GL_BUFFER_MAPPED_OES" category="OES_mapbuffer"/>
-       </desc>
 </template>
 
 <template name="IsBuffer" direction="get">
                <return type="GLuint"/>
                <param name="type" type="GLenum"/>
        </proto>
-
-       <desc name="type">
-               <value name="GL_VERTEX_SHADER"/>
-               <value name="GL_FRAGMENT_SHADER"/>
-       </desc>
 </template>
 
 <template name="ShaderSource">
                <return type="void"/>
                <param name="shader" type="GLuint"/>
                <param name="count" type="GLsizei"/>
-               <param name="string" type="const GLchar **"/>
+               <param name="string" type="const GLchar * const *"/>
                <param name="length" type="const int *"/>
        </proto>
 </template>
                <return type="void"/>
                <param name="target" type="GLenum"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/>
-       </desc>
 </template>
 
 <template name="BindFramebuffer">
                <param name="target" type="GLenum"/>
                <param name="framebuffer" type="GLuint"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
-       </desc>
 </template>
 
 <template name="DeleteFramebuffers">
                <param name="target" type="GLenum"/>
                <param name="renderbuffer" type="GLuint"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_RENDERBUFFER" category="GLES2.0"/>
-       </desc>
 </template>
 
 <template name="DeleteRenderbuffers">
                <param name="width" type="GLsizei"/>
                <param name="height" type="GLsizei"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_RENDERBUFFER" category="GLES2.0"/>
-       </desc>
-
-       <desc name="internalFormat">
-               <value name="GL_DEPTH_COMPONENT16_OES" category="OES_framebuffer_object"/>
-               <value name="GL_RGBA4_OES" category="OES_framebuffer_object"/>
-               <value name="GL_RGB5_A1_OES" category="OES_framebuffer_object"/>
-               <value name="GL_RGB565_OES" category="OES_framebuffer_object"/>
-               <value name="GL_STENCIL_INDEX8_OES" category="OES_stencil8"/>
-
-               <value name="GL_DEPTH_COMPONENT16" category="GLES2.0"/>
-               <value name="GL_RGBA4" category="GLES2.0"/>
-               <value name="GL_RGB5_A1" category="GLES2.0"/>
-               <value name="GL_RGB565" category="GLES2.0"/>
-               <value name="GL_STENCIL_INDEX8" category="GLES2.0"/>
-
-               <value name="GL_DEPTH_COMPONENT24_OES" category="OES_depth24"/>
-               <value name="GL_DEPTH_COMPONENT32_OES" category="OES_depth32"/>
-               <value name="GL_RGB8_OES" category="OES_rgb8_rgba8"/>
-               <value name="GL_RGBA8_OES" category="OES_rgb8_rgba8"/>
-               <value name="GL_STENCIL_INDEX1_OES" category="OES_stencil1"/>
-               <value name="GL_STENCIL_INDEX4_OES" category="OES_stencil4"/>
-               <value name="GL_DEPTH24_STENCIL8_OES" category="OES_packed_depth_stencil"/>
-       </desc>
 </template>
 
 <template name="FramebufferRenderbuffer">
                <param name="renderbuffertarget" type="GLenum"/>
                <param name="renderbuffer" type="GLuint"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
-       </desc>
-
-       <desc name="attachment">
-               <value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/>
-               <value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-               <value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-               <value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/>
-               <value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/>
-               <value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/>
-       </desc>
-
-       <desc name="renderbuffertarget">
-               <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_RENDERBUFFER" category="GLES2.0"/>
-       </desc>
 </template>
 
 <template name="FramebufferTexture2D">
                <param name="texture" type="GLuint"/>
                <param name="level" type="GLint"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
-       </desc>
-
-       <desc name="attachment">
-               <value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/>
-               <value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-               <value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-               <value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/>
-               <value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/>
-               <value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/>
-       </desc>
-
-       <desc name="textarget" error="GL_INVALID_OPERATION">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/>
-       </desc>
        <!-- According to the base specification, "level" must be 0.  But
             extension GL_OES_fbo_render_mipmap lifts that restriction,
             so no restriction is placed here. -->
                <param name="level" type="GLint"/>
                <param name="zoffset" type="GLint"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
-       </desc>
-
-       <desc name="attachment">
-               <value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/>
-               <value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-               <value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-               <value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/>
-               <value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/>
-               <value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/>
-       </desc>
-
-       <desc name="textarget" error="GL_INVALID_OPERATION">
-               <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/>
-       </desc>
 </template>
 
 <template name="CheckFramebufferStatus" direction="get">
                <return type="GLenum"/>
                <param name="target" type="GLenum"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
-       </desc>
 </template>
 
 <template name="GetFramebufferAttachmentParameter" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
-       </desc>
-
-       <desc name="pname">
-               <value name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES" category="OES_framebuffer_object"/>
-               <value name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES" category="OES_framebuffer_object"/>
-               <value name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" category="OES_framebuffer_object"/>
-               <value name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" category="OES_framebuffer_object"/>
-
-               <value name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE" category="GLES2.0"/>
-               <value name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME" category="GLES2.0"/>
-               <value name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL" category="GLES2.0"/>
-               <value name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE" category="GLES2.0"/>
-               <value name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" category="OES_texture_3D"/>
-
-               <desc name="params" vector_size="1" convert="false"/>
-       </desc>
 </template>
 
 <template name="GetRenderbufferParameter" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_RENDERBUFFER" category="GLES2.0"/>
-       </desc>
-
-       <desc name="pname" category="OES_framebuffer_object">
-               <value name="GL_RENDERBUFFER_WIDTH_OES"/>
-               <value name="GL_RENDERBUFFER_HEIGHT_OES"/>
-               <value name="GL_RENDERBUFFER_INTERNAL_FORMAT_OES"/>
-               <value name="GL_RENDERBUFFER_RED_SIZE_OES"/>
-               <value name="GL_RENDERBUFFER_GREEN_SIZE_OES"/>
-               <value name="GL_RENDERBUFFER_BLUE_SIZE_OES"/>
-               <value name="GL_RENDERBUFFER_ALPHA_SIZE_OES"/>
-               <value name="GL_RENDERBUFFER_DEPTH_SIZE_OES"/>
-               <value name="GL_RENDERBUFFER_STENCIL_SIZE_OES"/>
-
-               <desc name="params" vector_size="1" convert="false"/>
-       </desc>
-
-       <desc name="pname" category="GLES2.0">
-               <value name="GL_RENDERBUFFER_WIDTH"/>
-               <value name="GL_RENDERBUFFER_HEIGHT"/>
-               <value name="GL_RENDERBUFFER_INTERNAL_FORMAT"/>
-               <value name="GL_RENDERBUFFER_RED_SIZE"/>
-               <value name="GL_RENDERBUFFER_GREEN_SIZE"/>
-               <value name="GL_RENDERBUFFER_BLUE_SIZE"/>
-               <value name="GL_RENDERBUFFER_ALPHA_SIZE"/>
-               <value name="GL_RENDERBUFFER_DEPTH_SIZE"/>
-               <value name="GL_RENDERBUFFER_STENCIL_SIZE"/>
-
-               <desc name="params" vector_size="1" convert="false"/>
-       </desc>
 </template>
 
 <template name="IsRenderbuffer" direction="get">
                <param name="pname" type="GLenum"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
-
-       <desc name="pname">
-               <value name="GL_SHADER_TYPE"/>
-               <value name="GL_COMPILE_STATUS"/>
-               <value name="GL_DELETE_STATUS"/>
-               <value name="GL_INFO_LOG_LENGTH"/>
-               <value name="GL_SHADER_SOURCE_LENGTH"/>
-       </desc>
 </template>
 
 <template name="GetAttachedShaders" direction="get">
                <param name="range" type="GLint *"/>
                <param name="precision" type="GLint *"/>
        </proto>
-
-       <desc name="shadertype">
-               <value name="GL_VERTEX_SHADER"/>
-               <value name="GL_FRAGMENT_SHADER"/>
-       </desc>
-
-       <desc name="precisiontype">
-               <value name="GL_LOW_FLOAT"/>
-               <value name="GL_MEDIUM_FLOAT"/>
-               <value name="GL_HIGH_FLOAT"/>
-               <value name="GL_LOW_INT"/>
-               <value name="GL_MEDIUM_INT"/>
-               <value name="GL_HIGH_INT"/>
-       </desc>
 </template>
 
 <template name="GetUniform" direction="get">
                <param name="count" type="const GLsizei *"/>
                <param name="primcount" type="GLsizei"/>
        </proto>
-
-       <desc name="mode">
-               <value name="GL_POINTS"/>
-               <value name="GL_LINES"/>
-               <value name="GL_LINE_LOOP"/>
-               <value name="GL_LINE_STRIP"/>
-               <value name="GL_TRIANGLES"/>
-               <value name="GL_TRIANGLE_STRIP"/>
-               <value name="GL_TRIANGLE_FAN"/>
-       </desc>
 </template>
 
 <template name="MultiDrawElements">
                <param name="indices" type="const GLvoid **"/>
                <param name="primcount" type="GLsizei"/>
        </proto>
-
-       <desc name="mode">
-               <value name="GL_POINTS"/>
-               <value name="GL_LINES"/>
-               <value name="GL_LINE_LOOP"/>
-               <value name="GL_LINE_STRIP"/>
-               <value name="GL_TRIANGLES"/>
-               <value name="GL_TRIANGLE_STRIP"/>
-               <value name="GL_TRIANGLE_FAN"/>
-       </desc>
-
-       <desc name="type">
-               <value name="GL_UNSIGNED_BYTE"/>
-               <value name="GL_UNSIGNED_SHORT"/>
-               <value name="GL_UNSIGNED_INT" category="OES_element_index_uint"/>
-       </desc>
 </template>
 
 <template name="EGLImageTargetTexture2D">
                <param name="target" type="GLenum"/>
                <param name="image" type="GLeglImageOES"/>
        </proto>
-
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-       </desc>
 </template>
 
 <template name="EGLImageTargetRenderbufferStorage">
                <param name="target" type="GLenum"/>
                <param name="image" type="GLeglImageOES"/>
        </proto>
+</template>
 
-       <desc name="target">
-               <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
-               <value name="GL_RENDERBUFFER" category="GLES2.0"/>
-       </desc>
+<template name="DrawBuffers">
+       <proto>
+               <return type="void"/>
+               <param name="n" type="GLsizei"/>
+               <param name="bufs" type="const GLenum *"/>
+       </proto>
+</template>
+
+<template name="ReadBuffer">
+       <proto>
+               <return type="void"/>
+               <param name="mode" type="GLenum"/>
+       </proto>
 </template>
 
 <api name="mesa" implementation="true">
         <!-- OES_EGL_image -->
         <function name="EGLImageTargetTexture2DOES" template="EGLImageTargetTexture2D"/>
         <function name="EGLImageTargetRenderbufferStorageOES" template="EGLImageTargetRenderbufferStorage"/>
+
+       <function name="DrawBuffersARB" template="DrawBuffers"/>
+
+       <function name="ReadBuffer" template="ReadBuffer"/>
+
 </api>
 
 <api name="GLES1.1">
        <category name="OES_matrix_get"/>
        <category name="OES_read_format"/>
        <category name="OES_compressed_paletted_texture"/>
+       <category name="OES_compressed_ETC1_RGB8_texture"/>
        <category name="OES_point_size_array"/>
        <category name="OES_point_sprite"/>
        <category name="OES_query_matrix"/>
        <category name="OES_element_index_uint"/>
        <category name="OES_mapbuffer"/>
        <category name="EXT_texture_filter_anisotropic"/>
+       <category name="EXT_texture_format_BGRA8888"/>
+       <category name="EXT_read_format_bgra"/>
 
        <category name="ARB_texture_non_power_of_two"/>
        <!-- disabled due to missing enums
        <category name="EXT_blend_minmax"/>
        <category name="EXT_multi_draw_arrays"/>
        <category name="OES_EGL_image"/>
+       <category name="OES_EGL_image_external"/>
 
        <category name="OES_matrix_palette"/>
 
        <category name="GLES2.0"/>
 
        <category name="OES_compressed_paletted_texture"/>
+       <category name="OES_compressed_ETC1_RGB8_texture"/>
        <category name="OES_depth24"/>
        <category name="OES_depth32"/>
        <category name="OES_fbo_render_mipmap"/>
        <category name="OES_packed_depth_stencil"/>
        <category name="OES_standard_derivatives"/>
        <category name="EXT_texture_format_BGRA8888"/>
+       <category name="EXT_texture_rg"/>
+       <category name="EXT_read_format_bgra"/>
 
        <category name="EXT_texture_compression_dxt1"/>
        <category name="EXT_blend_minmax"/>
        <category name="EXT_multi_draw_arrays"/>
        <category name="OES_EGL_image"/>
+       <category name="OES_EGL_image_external"/>
+        <category name="EXT_unpack_subimage"/>
+
+       <category name="NV_draw_buffers"/>
+       <category name="NV_read_buffer"/>
+
+       <!-- GL_ANGLE_texture_compression_dxt -->
+       <category name="ANGLE_texture_compression_dxt"/>
+
+       <function name="DrawBuffersNV" template="DrawBuffers"/>
+       <function name="ReadBufferNV" template="ReadBuffer"/> 
 
        <function name="CullFace" template="CullFace"/>