# Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This document is licensed under the SGI Free Software B License Version
# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
#
# OpenGL-ES 2.0 entry points produced from running the OpenGL-ES 2.0 headers
# through CPP.
#
# API entry points are specified in the following format
#
# FILTER(void function(int arg))
#
# Where FILTER is a keyword describing how to stub the function.
#  - STUB does nothing and returns 0
#  - GEN implements a name generation function
#  - MANUAL does not automatically generate code
#

STUB(void glActiveTexture (GLenum texture))
STUB(void glAttachShader (GLuint program, GLuint shader))
STUB(void glBindAttribLocation (GLuint program, GLuint index, const char* name))
STUB(void glBindBuffer (GLenum target, GLuint buffer))
STUB(void glBindFramebuffer (GLenum target, GLuint framebuffer))
STUB(void glBindRenderbuffer (GLenum target, GLuint renderbuffer))
STUB(void glBindTexture (GLenum target, GLuint texture))
STUB(void glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha))
STUB(void glBlendEquation ( GLenum mode ))
STUB(void glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha))
STUB(void glBlendFunc (GLenum sfactor, GLenum dfactor))
STUB(void glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha))
STUB(void glBufferData (GLenum target, GLsizeiptr size, const void* data, GLenum usage))
STUB(void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void* data))
STUB(GLenum glCheckFramebufferStatus (GLenum target))
STUB(void glClear (GLbitfield mask))
STUB(void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha))
STUB(void glClearDepthf (GLclampf depth))
STUB(void glClearStencil (GLint s))
STUB(void glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha))
STUB(void glCompileShader (GLuint shader))
STUB(void glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data))
STUB(void glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data))
STUB(void glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border))
STUB(void glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height))
MANUAL(GLuint glCreateProgram (void))
MANUAL(GLuint glCreateShader (GLenum type))
STUB(void glCullFace (GLenum mode))
STUB(void glDeleteBuffers (GLsizei n, const GLuint* buffers))
STUB(void glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers))
STUB(void glDeleteProgram (GLuint program))
STUB(void glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers))
STUB(void glDeleteShader (GLuint shader))
STUB(void glDeleteTextures (GLsizei n, const GLuint* textures))
STUB(void glDepthFunc (GLenum func))
STUB(void glDepthMask (GLboolean flag))
STUB(void glDepthRangef (GLclampf zNear, GLclampf zFar))
STUB(void glDetachShader (GLuint program, GLuint shader))
STUB(void glDisable (GLenum cap))
STUB(void glDisableVertexAttribArray (GLuint index))
STUB(void glDrawArrays (GLenum mode, GLint first, GLsizei count))
STUB(void glDrawElements (GLenum mode, GLsizei count, GLenum type, const void* indices))
STUB(void glEnable (GLenum cap))
STUB(void glEnableVertexAttribArray (GLuint index))
STUB(void glFinish (void))
STUB(void glFlush (void))
STUB(void glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer))
STUB(void glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level))
STUB(void glFrontFace (GLenum mode))
GEN(void glGenBuffers (GLsizei n, GLuint* buffers))
STUB(void glGenerateMipmap (GLenum target))
GEN(void glGenFramebuffers (GLsizei n, GLuint* framebuffers))
GEN(void glGenRenderbuffers (GLsizei n, GLuint* renderbuffers))
STUB(void glGenTextures (GLsizei n, GLuint* textures))
STUB(void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name))
STUB(void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name))
STUB(void glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders))
STUB(int glGetAttribLocation (GLuint program, const char* name))
STUB(void glGetBooleanv (GLenum pname, GLboolean* params))
STUB(void glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params))
MANUAL(GLenum glGetError (void))
STUB(void glGetFloatv (GLenum pname, GLfloat* params))
STUB(void glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params))
STUB(void glGetIntegerv (GLenum pname, GLint* params))
STUB(void glGetProgramiv (GLuint program, GLenum pname, GLint* params))
STUB(void glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, char* infolog))
STUB(void glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params))
STUB(void glGetShaderiv (GLuint shader, GLenum pname, GLint* params))
STUB(void glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog))
STUB(void glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision))
STUB(void glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, char* source))
MANUAL(const GLubyte* glGetString (GLenum name))
STUB(void glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params))
STUB(void glGetTexParameteriv (GLenum target, GLenum pname, GLint* params))
STUB(void glGetUniformfv (GLuint program, GLint location, GLfloat* params))
STUB(void glGetUniformiv (GLuint program, GLint location, GLint* params))
STUB(int glGetUniformLocation (GLuint program, const char* name))
STUB(void glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params))
STUB(void glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params))
STUB(void glGetVertexAttribPointerv (GLuint index, GLenum pname, void** pointer))
STUB(void glHint (GLenum target, GLenum mode))
STUB(GLboolean glIsBuffer (GLuint buffer))
STUB(GLboolean glIsEnabled (GLenum cap))
STUB(GLboolean glIsFramebuffer (GLuint framebuffer))
STUB(GLboolean glIsProgram (GLuint program))
STUB(GLboolean glIsRenderbuffer (GLuint renderbuffer))
STUB(GLboolean glIsShader (GLuint shader))
STUB(GLboolean glIsTexture (GLuint texture))
STUB(void glLineWidth (GLfloat width))
STUB(void glLinkProgram (GLuint program))
STUB(void glPixelStorei (GLenum pname, GLint param))
STUB(void glPolygonOffset (GLfloat factor, GLfloat units))
STUB(void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels))
STUB(void glReleaseShaderCompiler (void))
STUB(void glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height))
STUB(void glSampleCoverage (GLclampf value, GLboolean invert))
STUB(void glScissor (GLint x, GLint y, GLsizei width, GLsizei height))
STUB(void glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length))
STUB(void glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length))
STUB(void glStencilFunc (GLenum func, GLint ref, GLuint mask))
STUB(void glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask))
STUB(void glStencilMask (GLuint mask))
STUB(void glStencilMaskSeparate (GLenum face, GLuint mask))
STUB(void glStencilOp (GLenum fail, GLenum zfail, GLenum zpass))
STUB(void glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass))
STUB(void glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels))
STUB(void glTexParameterf (GLenum target, GLenum pname, GLfloat param))
STUB(void glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params))
STUB(void glTexParameteri (GLenum target, GLenum pname, GLint param))
STUB(void glTexParameteriv (GLenum target, GLenum pname, const GLint* params))
STUB(void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels))
STUB(void glUniform1f (GLint location, GLfloat x))
STUB(void glUniform1fv (GLint location, GLsizei count, const GLfloat* v))
STUB(void glUniform1i (GLint location, GLint x))
STUB(void glUniform1iv (GLint location, GLsizei count, const GLint* v))
STUB(void glUniform2f (GLint location, GLfloat x, GLfloat y))
STUB(void glUniform2fv (GLint location, GLsizei count, const GLfloat* v))
STUB(void glUniform2i (GLint location, GLint x, GLint y))
STUB(void glUniform2iv (GLint location, GLsizei count, const GLint* v))
STUB(void glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z))
STUB(void glUniform3fv (GLint location, GLsizei count, const GLfloat* v))
STUB(void glUniform3i (GLint location, GLint x, GLint y, GLint z))
STUB(void glUniform3iv (GLint location, GLsizei count, const GLint* v))
STUB(void glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w))
STUB(void glUniform4fv (GLint location, GLsizei count, const GLfloat* v))
STUB(void glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w))
STUB(void glUniform4iv (GLint location, GLsizei count, const GLint* v))
STUB(void glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value))
STUB(void glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value))
STUB(void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value))
STUB(void glUseProgram (GLuint program))
STUB(void glValidateProgram (GLuint program))
STUB(void glVertexAttrib1f (GLuint indx, GLfloat x))
STUB(void glVertexAttrib1fv (GLuint indx, const GLfloat* values))
STUB(void glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y))
STUB(void glVertexAttrib2fv (GLuint indx, const GLfloat* values))
STUB(void glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z))
STUB(void glVertexAttrib3fv (GLuint indx, const GLfloat* values))
STUB(void glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w))
STUB(void glVertexAttrib4fv (GLuint indx, const GLfloat* values))
STUB(void glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr))
STUB(void glViewport (GLint x, GLint y, GLsizei width, GLsizei height))
