GL_ARB_separate_shader_objects
http://www.opengl.org/registry/specs/ARB/separate_shader_objects.txt
GL_ARB_separate_shader_objects

	GL_VERTEX_SHADER_BIT 0x00000001
	GL_FRAGMENT_SHADER_BIT 0x00000002
	GL_GEOMETRY_SHADER_BIT 0x00000004
	GL_TESS_CONTROL_SHADER_BIT 0x00000008
	GL_TESS_EVALUATION_SHADER_BIT 0x00000010
	GL_PROGRAM_SEPARABLE 0x8258
	GL_ACTIVE_PROGRAM 0x8259
	GL_PROGRAM_PIPELINE_BINDING 0x825A
	GL_ALL_SHADER_BITS 0xFFFFFFFF
	void glActiveShaderProgram (GLuint pipeline, GLuint program)
	void glBindProgramPipeline (GLuint pipeline)
	GLuint glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar * const * strings)
	void glDeleteProgramPipelines (GLsizei n, const GLuint* pipelines)
	void glGenProgramPipelines (GLsizei n, GLuint* pipelines)
	void glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar *infoLog)
	void glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint* params)
	GLboolean glIsProgramPipeline (GLuint pipeline)
	void glProgramUniform1d (GLuint program, GLint location, GLdouble x)
	void glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
	void glProgramUniform1f (GLuint program, GLint location, GLfloat x)
	void glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
	void glProgramUniform1i (GLuint program, GLint location, GLint x)
	void glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint* value)
	void glProgramUniform1ui (GLuint program, GLint location, GLuint x)
	void glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
	void glProgramUniform2d (GLuint program, GLint location, GLdouble x, GLdouble y)
	void glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
	void glProgramUniform2f (GLuint program, GLint location, GLfloat x, GLfloat y)
	void glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
	void glProgramUniform2i (GLuint program, GLint location, GLint x, GLint y)
	void glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint* value)
	void glProgramUniform2ui (GLuint program, GLint location, GLuint x, GLuint y)
	void glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
	void glProgramUniform3d (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z)
	void glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
	void glProgramUniform3f (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z)
	void glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
	void glProgramUniform3i (GLuint program, GLint location, GLint x, GLint y, GLint z)
	void glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint* value)
	void glProgramUniform3ui (GLuint program, GLint location, GLuint x, GLuint y, GLuint z)
	void glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
	void glProgramUniform4d (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
	void glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
	void glProgramUniform4f (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
	void glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
	void glProgramUniform4i (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w)
	void glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint* value)
	void glProgramUniform4ui (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w)
	void glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
	void glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
	void glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
	void glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
	void glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
	void glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
	void glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
	void glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
	void glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
	void glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
	void glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
	void glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
	void glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
	void glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
	void glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
	void glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
	void glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
	void glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
	void glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
	void glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program)
	void glValidateProgramPipeline (GLuint pipeline)
