--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+<OpenGLAPI>
+
+<category name="GL_ARB_shader_subroutine" number="90">
+
+ <function name="GetSubroutineUniformLocation" offset="assign">
+ <param name="program" type="GLuint"/>
+ <param name="shadertype" type="GLenum"/>
+ <param name="name" type="const GLchar *"/>
+ <return type="GLint"/>
+ </function>
+
+ <function name="GetSubroutineIndex" offset="assign">
+ <param name="program" type="GLuint"/>
+ <param name="shadertype" type="GLenum"/>
+ <param name="name" type="const GLchar *"/>
+ <return type="GLuint"/>
+ </function>
+
+ <function name="GetActiveSubroutineUniformiv" offset="assign">
+ <param name="program" type="GLuint"/>
+ <param name="shadertype" type="GLenum"/>
+ <param name="index" type="GLuint"/>
+ <param name="pname" type="GLenum"/>
+ <param name="values" type="GLint *" output="true"/>
+ </function>
+
+ <function name="GetActiveSubroutineUniformName" offset="assign">
+ <param name="program" type="GLuint"/>
+ <param name="shadertype" type="GLenum"/>
+ <param name="index" type="GLuint"/>
+ <param name="bufsize" type="GLsizei"/>
+ <param name="length" type="GLsizei *" output="true"/>
+ <param name="name" type="GLchar *" output="true"/>
+ </function>
+
+ <function name="GetActiveSubroutineName" offset="assign">
+ <param name="program" type="GLuint"/>
+ <param name="shadertype" type="GLenum"/>
+ <param name="index" type="GLuint"/>
+ <param name="bufsize" type="GLsizei"/>
+ <param name="length" type="GLsizei *" output="true"/>
+ <param name="name" type="GLchar *" output="true"/>
+ </function>
+
+ <function name="UniformSubroutinesuiv" offset="assign">
+ <param name="shadertype" type="GLenum"/>
+ <param name="count" type="GLsizei"/>
+ <param name="indices" type="const GLuint *"/>
+ </function>
+
+ <function name="GetUniformSubroutineuiv" offset="assign">
+ <param name="shadertype" type="GLenum"/>
+ <param name="location" type="GLint"/>
+ <param name="params" type="GLuint *" output="true"/>
+ </function>
+
+ <function name="GetProgramStageiv" offset="assign">
+ <param name="program" type="GLuint"/>
+ <param name="shadertype" type="GLenum"/>
+ <param name="pname" type="GLenum"/>
+ <param name="values" type="GLint *" output="true"/>
+ </function>
+
+ <enum name="ACTIVE_SUBROUTINES" value="0x8DE5"/>
+ <enum name="ACTIVE_SUBROUTINE_UNIFORMS" value="0x8DE6"/>
+ <enum name="ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS" value="0x8E47"/>
+ <enum name="ACTIVE_SUBROUTINE_MAX_LENGTH" value="0x8E48"/>
+ <enum name="ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH" value="0x8E49"/>
+
+ <enum name="MAX_SUBROUTINES" value="0x8DE7"/>
+ <enum name="MAX_SUBROUTINE_UNIFORM_LOCATIONS" value="0x8DE8"/>
+
+ <enum name="NUM_COMPATIBLE_SUBROUTINES" value="0x8E4A"/>
+ <enum name="COMPATIBLE_SUBROUTINES" value="0x8E4B"/>
+
+ <!-- UNIFORM_SIZE, UNIFORM_NAME_LENGTH already in GL3.1 -->
+
+</category>
+</OpenGLAPI>