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

<!-- OpenGL + OpenGL ES -->

<OpenGLAPI>

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

<!-- these can be moved to gl_API.xml -->
<xi:include href="ARB_get_program_binary.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="OES_fixed_point.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="OES_single_precision.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>

<category name="es1.0">
    <!-- from GL_OES_fixed_point -->
    <enum name="FIXED"                                    value="0x140C"/>

    <type name="fixed"   size="4"                                    />
    <type name="clampx"  size="4"                                    />

    <function name="AlphaFuncx" alias="AlphaFuncxOES" static_dispatch="false">
        <param name="func" type="GLenum"/>
        <param name="ref" type="GLclampx"/>
    </function>

    <function name="ClearColorx" alias="ClearColorxOES" static_dispatch="false">
        <param name="red" type="GLclampx"/>
        <param name="green" type="GLclampx"/>
        <param name="blue" type="GLclampx"/>
        <param name="alpha" type="GLclampx"/>
    </function>

    <function name="ClearDepthx" alias="ClearDepthxOES" static_dispatch="false">
        <param name="depth" type="GLclampx"/>
    </function>

    <function name="Color4x" alias="Color4xOES" static_dispatch="false">
        <param name="red" type="GLfixed"/>
        <param name="green" type="GLfixed"/>
        <param name="blue" type="GLfixed"/>
        <param name="alpha" type="GLfixed"/>
    </function>

    <function name="DepthRangex" alias="DepthRangexOES" static_dispatch="false">
        <param name="zNear" type="GLclampx"/>
        <param name="zFar" type="GLclampx"/>
    </function>

    <function name="Fogx" alias="FogxOES" static_dispatch="false">
        <param name="pname" type="GLenum"/>
        <param name="param" type="GLfixed"/>
    </function>

    <function name="Fogxv" alias="FogxvOES" static_dispatch="false">
        <param name="pname" type="GLenum"/>
        <param name="params" type="const GLfixed *" variable_param="pname"/>
    </function>

    <function name="Frustumx" alias="FrustumxOES" static_dispatch="false">
        <param name="left" type="GLfixed"/>
        <param name="right" type="GLfixed"/>
        <param name="bottom" type="GLfixed"/>
        <param name="top" type="GLfixed"/>
        <param name="zNear" type="GLfixed"/>
        <param name="zFar" type="GLfixed"/>
    </function>

    <function name="LightModelx" alias="LightModelxOES" static_dispatch="false">
        <param name="pname" type="GLenum"/>
        <param name="param" type="GLfixed"/>
    </function>

    <function name="LightModelxv" alias="LightModelxvOES" static_dispatch="false">
        <param name="pname" type="GLenum"/>
        <param name="params" type="const GLfixed *" variable_param="pname"/>
    </function>

    <function name="Lightx" alias="LightxOES" static_dispatch="false">
        <param name="light" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="param" type="GLfixed"/>
    </function>

    <function name="Lightxv" alias="LightxvOES" static_dispatch="false">
        <param name="light" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="const GLfixed *" variable_param="pname"/>
    </function>

    <function name="LineWidthx" alias="LineWidthxOES" static_dispatch="false">
        <param name="width" type="GLfixed"/>
    </function>

    <function name="LoadMatrixx" alias="LoadMatrixxOES" static_dispatch="false">
        <param name="m" type="const GLfixed *" count="16"/>
    </function>

    <function name="Materialx" alias="MaterialxOES" static_dispatch="false">
        <param name="face" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="param" type="GLfixed"/>
    </function>

    <function name="Materialxv" alias="MaterialxvOES" static_dispatch="false">
        <param name="face" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="const GLfixed *" variable_param="pname"/>
    </function>

    <function name="MultMatrixx" alias="MultMatrixxOES" static_dispatch="false">
        <param name="m" type="const GLfixed *" count="16"/>
    </function>

    <function name="MultiTexCoord4x" alias="MultiTexCoord4xOES" static_dispatch="false">
        <param name="target" type="GLenum"/>
        <param name="s" type="GLfixed"/>
        <param name="t" type="GLfixed"/>
        <param name="r" type="GLfixed"/>
        <param name="q" type="GLfixed"/>
    </function>

    <function name="Normal3x" alias="Normal3xOES" static_dispatch="false">
        <param name="nx" type="GLfixed"/>
        <param name="ny" type="GLfixed"/>
        <param name="nz" type="GLfixed"/>
    </function>

    <function name="Orthox" alias="OrthoxOES" static_dispatch="false">
        <param name="left" type="GLfixed"/>
        <param name="right" type="GLfixed"/>
        <param name="bottom" type="GLfixed"/>
        <param name="top" type="GLfixed"/>
        <param name="zNear" type="GLfixed"/>
        <param name="zFar" type="GLfixed"/>
    </function>

    <function name="PointSizex" alias="PointSizexOES" static_dispatch="false">
        <param name="size" type="GLfixed"/>
    </function>

    <function name="PolygonOffsetx" alias="PolygonOffsetxOES" static_dispatch="false">
        <param name="factor" type="GLfixed"/>
        <param name="units" type="GLfixed"/>
    </function>

    <function name="Rotatex" alias="RotatexOES" static_dispatch="false">
        <param name="angle" type="GLfixed"/>
        <param name="x" type="GLfixed"/>
        <param name="y" type="GLfixed"/>
        <param name="z" type="GLfixed"/>
    </function>

    <function name="SampleCoveragex" alias="SampleCoveragexOES" static_dispatch="false">
        <param name="value" type="GLclampx"/>
        <param name="invert" type="GLboolean"/>
    </function>

    <function name="Scalex" alias="ScalexOES" static_dispatch="false">
        <param name="x" type="GLfixed"/>
        <param name="y" type="GLfixed"/>
        <param name="z" type="GLfixed"/>
    </function>

    <function name="TexEnvx" alias="TexEnvxOES" static_dispatch="false">
        <param name="target" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="param" type="GLfixed"/>
    </function>

    <function name="TexEnvxv" alias="TexEnvxvOES" static_dispatch="false">
        <param name="target" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="const GLfixed *" variable_param="pname"/>
    </function>

    <function name="TexParameterx" alias="TexParameterxOES" static_dispatch="false">
        <param name="target" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="param" type="GLfixed"/>
    </function>

    <function name="Translatex" alias="TranslatexOES" static_dispatch="false">
        <param name="x" type="GLfixed"/>
        <param name="y" type="GLfixed"/>
        <param name="z" type="GLfixed"/>
    </function>

    <!-- from GL_OES_single_precision -->
    <function name="Frustumf" alias="FrustumfOES" static_dispatch="false">
        <param name="left" type="GLfloat"/>
        <param name="right" type="GLfloat"/>
        <param name="bottom" type="GLfloat"/>
        <param name="top" type="GLfloat"/>
        <param name="zNear" type="GLfloat"/>
        <param name="zFar" type="GLfloat"/>
    </function>

    <function name="Orthof" alias="OrthofOES" static_dispatch="false">
        <param name="left" type="GLfloat"/>
        <param name="right" type="GLfloat"/>
        <param name="bottom" type="GLfloat"/>
        <param name="top" type="GLfloat"/>
        <param name="zNear" type="GLfloat"/>
        <param name="zFar" type="GLfloat"/>
    </function>
</category>

<category name="es1.1">
    <!-- from GL_OES_fixed_point -->
    <function name="ClipPlanex" alias="ClipPlanexOES" static_dispatch="false">
        <param name="plane" type="GLenum"/>
        <param name="equation" type="const GLfixed *" count="4"/>
    </function>

    <function name="GetClipPlanex" alias="GetClipPlanexOES" static_dispatch="false">
        <param name="plane" type="GLenum"/>
        <param name="equation" type="GLfixed *" output="true" count="4"/>
    </function>

    <function name="GetFixedv" alias="GetFixedvOES" static_dispatch="false">
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
    </function>

    <function name="GetLightxv" alias="GetLightxvOES" static_dispatch="false">
        <param name="light" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
    </function>

    <function name="GetMaterialxv" alias="GetMaterialxvOES" static_dispatch="false">
        <param name="face" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
    </function>

    <function name="GetTexEnvxv" alias="GetTexEnvxvOES" static_dispatch="false">
        <param name="target" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
    </function>

    <function name="GetTexParameterxv" alias="GetTexParameterxvOES" static_dispatch="false">
        <param name="target" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
    </function>

    <function name="PointParameterx" alias="PointParameterxOES" static_dispatch="false">
        <param name="pname" type="GLenum"/>
        <param name="param" type="GLfixed"/>
    </function>

    <function name="PointParameterxv" alias="PointParameterxvOES" static_dispatch="false">
        <param name="pname" type="GLenum"/>
        <param name="params" type="const GLfixed *"/>
    </function>

    <function name="TexParameterxv" alias="TexParameterxvOES" static_dispatch="false">
        <param name="target" type="GLenum"/>
        <param name="pname" type="GLenum"/>
        <param name="params" type="const GLfixed *" variable_param="pname"/>
    </function>

    <!-- from GL_OES_single_precision -->
    <function name="ClipPlanef" alias="ClipPlanefOES" static_dispatch="false">
        <param name="plane" type="GLenum"/>
        <param name="equation" type="const GLfloat *" count="4"/>
    </function>

    <function name="GetClipPlanef" alias="GetClipPlanefOES" static_dispatch="false">
        <param name="plane" type="GLenum"/>
        <param name="equation" type="GLfloat *" output="true" count="4"/>
    </function>
</category>

<category name="es2.0">
    <!-- enums missing from GL_ARB_framebuffer_object and GL_EXT_framebuffer_object -->
    <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS"            value="0x8CD9"/>
    <enum name="RGB565"                                       value="0x8D62"/>
</category>

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

</OpenGLAPI>
