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

<OpenGLAPI>

<category name="GL_ARB_gpu_shader_fp64" number="89">

    <function name="Uniform1d" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="x" type="GLdouble"/>
    </function>

    <function name="Uniform2d" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="x" type="GLdouble"/>
        <param name="y" type="GLdouble"/>
    </function>

    <function name="Uniform3d" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="x" type="GLdouble"/>
        <param name="y" type="GLdouble"/>
        <param name="z" type="GLdouble"/>
    </function>

    <function name="Uniform4d" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="x" type="GLdouble"/>
        <param name="y" type="GLdouble"/>
        <param name="z" type="GLdouble"/>
        <param name="w" type="GLdouble"/>
    </function>

    <function name="Uniform1dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="value" type="const GLdouble *" count="count"/>
    </function>

    <function name="Uniform2dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="2"/>
    </function>

    <function name="Uniform3dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="3"/>
    </function>

    <function name="Uniform4dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="4"/>
    </function>

    <function name="UniformMatrix2dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="4"/>
    </function>

    <function name="UniformMatrix3dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="9"/>
    </function>

    <function name="UniformMatrix4dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="16"/>
    </function>

    <function name="UniformMatrix2x3dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="6"/>
    </function>

    <function name="UniformMatrix2x4dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="8"/>
    </function>

    <function name="UniformMatrix3x2dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="6"/>
    </function>

    <function name="UniformMatrix3x4dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="12"/>
    </function>

    <function name="UniformMatrix4x2dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="8"/>
    </function>

    <function name="UniformMatrix4x3dv" exec="dlist">
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="12"/>
    </function>

    <function name="GetUniformdv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="params" type="GLdouble *"/>
    </function>

    <!-- EXT_direct_state_access interaction -->
    <function name="ProgramUniform1dEXT" alias="ProgramUniform1d">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="x" type="GLdouble"/>
    </function>

    <function name="ProgramUniform2dEXT" alias="ProgramUniform2d">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="x" type="GLdouble"/>
        <param name="y" type="GLdouble"/>
    </function>

    <function name="ProgramUniform3dEXT" alias="ProgramUniform3d">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="x" type="GLdouble"/>
        <param name="y" type="GLdouble"/>
        <param name="z" type="GLdouble"/>
    </function>

    <function name="ProgramUniform4dEXT" alias="ProgramUniform4d">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="x" type="GLdouble"/>
        <param name="y" type="GLdouble"/>
        <param name="z" type="GLdouble"/>
        <param name="w" type="GLdouble"/>
    </function>

    <function name="ProgramUniform1dvEXT" alias="ProgramUniform1dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="value" type="const GLdouble *" count="count"/>
    </function>

    <function name="ProgramUniform2dvEXT" alias="ProgramUniform2dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="2"/>
    </function>

    <function name="ProgramUniform3dvEXT" alias="ProgramUniform3dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="3"/>
    </function>

    <function name="ProgramUniform4dvEXT" alias="ProgramUniform4dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="4"/>
    </function>

    <function name="ProgramUniformMatrix2dvEXT" alias="ProgramUniformMatrix2dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="4"/>
    </function>

    <function name="ProgramUniformMatrix3dvEXT" alias="ProgramUniformMatrix3dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="9"/>
    </function>

    <function name="ProgramUniformMatrix4dvEXT" alias="ProgramUniformMatrix4dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="16"/>
    </function>

    <function name="ProgramUniformMatrix2x3dvEXT" alias="ProgramUniformMatrix2x3dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="6"/>
    </function>

    <function name="ProgramUniformMatrix2x4dvEXT" alias="ProgramUniformMatrix2x4dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="8"/>
    </function>

    <function name="ProgramUniformMatrix3x2dvEXT" alias="ProgramUniformMatrix3x2dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="6"/>
    </function>

    <function name="ProgramUniformMatrix3x4dvEXT" alias="ProgramUniformMatrix3x4dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="12"/>
    </function>

    <function name="ProgramUniformMatrix4x2dvEXT" alias="ProgramUniformMatrix4x2dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="8"/>
    </function>

    <function name="ProgramUniformMatrix4x3dvEXT" alias="ProgramUniformMatrix4x3dv">
        <param name="program" type="GLuint"/>
        <param name="location" type="GLint"/>
        <param name="count" type="GLsizei"/>
        <param name="transpose" type="GLboolean"/>
        <param name="value" type="const GLdouble *" count="count" count_scale="12"/>
    </function>

    <enum name="DOUBLE_VEC2"   value="0x8FFC"/>
    <enum name="DOUBLE_VEC3"   value="0x8FFD"/>
    <enum name="DOUBLE_VEC4"   value="0x8FFE"/>

    <enum name="DOUBLE_MAT2"   value="0x8F46"/>
    <enum name="DOUBLE_MAT3"   value="0x8F47"/>
    <enum name="DOUBLE_MAT4"   value="0x8F48"/>
    <enum name="DOUBLE_MAT2x3"   value="0x8F49"/>
    <enum name="DOUBLE_MAT2x4"   value="0x8F4A"/>
    <enum name="DOUBLE_MAT3x2"   value="0x8F4B"/>
    <enum name="DOUBLE_MAT3x4"   value="0x8F4C"/>
    <enum name="DOUBLE_MAT4x2"   value="0x8F4D"/>
    <enum name="DOUBLE_MAT4x3"   value="0x8F4E"/>
</category>

</OpenGLAPI>

