# 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 char** 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))
