Home | History | Annotate | Download | only in libGLESv2
      1 // Copyright 2016 The SwiftShader Authors. All Rights Reserved.
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //    http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 // entry_points.cpp: GL entry points exports and definition
     16 
     17 #include "main.h"
     18 
     19 #include "libEGL/main.h"
     20 
     21 namespace es2
     22 {
     23 void ActiveTexture(GLenum texture);
     24 void AttachShader(GLuint program, GLuint shader);
     25 void BeginQueryEXT(GLenum target, GLuint name);
     26 void BindAttribLocation(GLuint program, GLuint index, const GLchar* name);
     27 void BindBuffer(GLenum target, GLuint buffer);
     28 void BindFramebuffer(GLenum target, GLuint framebuffer);
     29 void BindRenderbuffer(GLenum target, GLuint renderbuffer);
     30 void BindTexture(GLenum target, GLuint texture);
     31 void BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
     32 void BlendEquation(GLenum mode);
     33 void BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
     34 void BlendFunc(GLenum sfactor, GLenum dfactor);
     35 void BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
     36 void BufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
     37 void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
     38 GLenum CheckFramebufferStatus(GLenum target);
     39 void Clear(GLbitfield mask);
     40 void ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
     41 void ClearDepthf(GLclampf depth);
     42 void ClearStencil(GLint s);
     43 void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
     44 void CompileShader(GLuint shader);
     45 void CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
     46                           GLint border, GLsizei imageSize, const GLvoid* data);
     47 void CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
     48                              GLenum format, GLsizei imageSize, const GLvoid* data);
     49 void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
     50 void CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
     51 GLuint CreateProgram(void);
     52 GLuint CreateShader(GLenum type);
     53 void CullFace(GLenum mode);
     54 void DeleteBuffers(GLsizei n, const GLuint* buffers);
     55 void DeleteFencesNV(GLsizei n, const GLuint* fences);
     56 void DeleteFramebuffers(GLsizei n, const GLuint* framebuffers);
     57 void DeleteProgram(GLuint program);
     58 void DeleteQueriesEXT(GLsizei n, const GLuint *ids);
     59 void DeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers);
     60 void DeleteShader(GLuint shader);
     61 void DeleteTextures(GLsizei n, const GLuint* textures);
     62 void DepthFunc(GLenum func);
     63 void DepthMask(GLboolean flag);
     64 void DepthRangef(GLclampf zNear, GLclampf zFar);
     65 void DetachShader(GLuint program, GLuint shader);
     66 void Disable(GLenum cap);
     67 void DisableVertexAttribArray(GLuint index);
     68 void DrawArrays(GLenum mode, GLint first, GLsizei count);
     69 void DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
     70 void DrawArraysInstancedEXT(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
     71 void DrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
     72 void VertexAttribDivisorEXT(GLuint index, GLuint divisor);
     73 void DrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
     74 void DrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
     75 void VertexAttribDivisorANGLE(GLuint index, GLuint divisor);
     76 void Enable(GLenum cap);
     77 void EnableVertexAttribArray(GLuint index);
     78 void EndQueryEXT(GLenum target);
     79 void FinishFenceNV(GLuint fence);
     80 void Finish(void);
     81 void Flush(void);
     82 void FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
     83 void FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
     84 void FrontFace(GLenum mode);
     85 void GenBuffers(GLsizei n, GLuint* buffers);
     86 void GenerateMipmap(GLenum target);
     87 void GenFencesNV(GLsizei n, GLuint* fences);
     88 void GenFramebuffers(GLsizei n, GLuint* framebuffers);
     89 void GenQueriesEXT(GLsizei n, GLuint* ids);
     90 void GenRenderbuffers(GLsizei n, GLuint* renderbuffers);
     91 void GenTextures(GLsizei n, GLuint* textures);
     92 void GetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
     93 void GetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
     94 void GetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
     95 int GetAttribLocation(GLuint program, const GLchar* name);
     96 void GetBooleanv(GLenum pname, GLboolean* params);
     97 void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params);
     98 GLenum GetError(void);
     99 void GetFenceivNV(GLuint fence, GLenum pname, GLint *params);
    100 void GetFloatv(GLenum pname, GLfloat* params);
    101 void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params);
    102 GLenum GetGraphicsResetStatusEXT(void);
    103 void GetIntegerv(GLenum pname, GLint* params);
    104 void GetProgramiv(GLuint program, GLenum pname, GLint* params);
    105 void GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
    106 void GetQueryivEXT(GLenum target, GLenum pname, GLint *params);
    107 void GetQueryObjectuivEXT(GLuint name, GLenum pname, GLuint *params);
    108 void GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params);
    109 void GetShaderiv(GLuint shader, GLenum pname, GLint* params);
    110 void GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
    111 void GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
    112 void GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
    113 const GLubyte* GetString(GLenum name);
    114 void GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params);
    115 void GetTexParameteriv(GLenum target, GLenum pname, GLint* params);
    116 void GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
    117 void GetUniformfv(GLuint program, GLint location, GLfloat* params);
    118 void GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* params);
    119 void GetUniformiv(GLuint program, GLint location, GLint* params);
    120 int GetUniformLocation(GLuint program, const GLchar* name);
    121 void GetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params);
    122 void GetVertexAttribiv(GLuint index, GLenum pname, GLint* params);
    123 void GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer);
    124 void Hint(GLenum target, GLenum mode);
    125 GLboolean IsBuffer(GLuint buffer);
    126 GLboolean IsEnabled(GLenum cap);
    127 GLboolean IsFenceNV(GLuint fence);
    128 GLboolean IsFramebuffer(GLuint framebuffer);
    129 GLboolean IsProgram(GLuint program);
    130 GLboolean IsQueryEXT(GLuint name);
    131 GLboolean IsRenderbuffer(GLuint renderbuffer);
    132 GLboolean IsShader(GLuint shader);
    133 GLboolean IsTexture(GLuint texture);
    134 void LineWidth(GLfloat width);
    135 void LinkProgram(GLuint program);
    136 void PixelStorei(GLenum pname, GLint param);
    137 void PolygonOffset(GLfloat factor, GLfloat units);
    138 void ReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
    139                     GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
    140 void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
    141 void ReleaseShaderCompiler(void);
    142 void RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
    143 void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
    144 void RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
    145 void SampleCoverage(GLclampf value, GLboolean invert);
    146 void SetFenceNV(GLuint fence, GLenum condition);
    147 void Scissor(GLint x, GLint y, GLsizei width, GLsizei height);
    148 void ShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
    149 void ShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length);
    150 void StencilFunc(GLenum func, GLint ref, GLuint mask);
    151 void StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
    152 void StencilMask(GLuint mask);
    153 void StencilMaskSeparate(GLenum face, GLuint mask);
    154 void StencilOp(GLenum fail, GLenum zfail, GLenum zpass);
    155 void StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
    156 GLboolean TestFenceNV(GLuint fence);
    157 void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
    158                 GLint border, GLenum format, GLenum type, const GLvoid* pixels);
    159 void TexParameterf(GLenum target, GLenum pname, GLfloat param);
    160 void TexParameterfv(GLenum target, GLenum pname, const GLfloat* params);
    161 void TexParameteri(GLenum target, GLenum pname, GLint param);
    162 void TexParameteriv(GLenum target, GLenum pname, const GLint* params);
    163 void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
    164                    GLenum format, GLenum type, const GLvoid* pixels);
    165 void Uniform1f(GLint location, GLfloat x);
    166 void Uniform1fv(GLint location, GLsizei count, const GLfloat* v);
    167 void Uniform1i(GLint location, GLint x);
    168 void Uniform1iv(GLint location, GLsizei count, const GLint* v);
    169 void Uniform2f(GLint location, GLfloat x, GLfloat y);
    170 void Uniform2fv(GLint location, GLsizei count, const GLfloat* v);
    171 void Uniform2i(GLint location, GLint x, GLint y);
    172 void Uniform2iv(GLint location, GLsizei count, const GLint* v);
    173 void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z);
    174 void Uniform3fv(GLint location, GLsizei count, const GLfloat* v);
    175 void Uniform3i(GLint location, GLint x, GLint y, GLint z);
    176 void Uniform3iv(GLint location, GLsizei count, const GLint* v);
    177 void Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
    178 void Uniform4fv(GLint location, GLsizei count, const GLfloat* v);
    179 void Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w);
    180 void Uniform4iv(GLint location, GLsizei count, const GLint* v);
    181 void UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
    182 void UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
    183 void UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
    184 void UseProgram(GLuint program);
    185 void ValidateProgram(GLuint program);
    186 void VertexAttrib1f(GLuint index, GLfloat x);
    187 void VertexAttrib1fv(GLuint index, const GLfloat* values);
    188 void VertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
    189 void VertexAttrib2fv(GLuint index, const GLfloat* values);
    190 void VertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
    191 void VertexAttrib3fv(GLuint index, const GLfloat* values);
    192 void VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
    193 void VertexAttrib4fv(GLuint index, const GLfloat* values);
    194 GL_APICALL void VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
    195 GL_APICALL void Viewport(GLint x, GLint y, GLsizei width, GLsizei height);
    196 GL_APICALL void BlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
    197 GL_APICALL void BlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
    198                                      GLbitfield mask, GLenum filter);
    199 GL_APICALL void TexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth,
    200                               GLint border, GLenum format, GLenum type, const GLvoid* pixels);
    201 GL_APICALL void TexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
    202 GL_APICALL void CopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
    203 GL_APICALL void CompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
    204 GL_APICALL void CompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
    205 GL_APICALL void FramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
    206 GL_APICALL void EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);
    207 GL_APICALL void EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image);
    208 GL_APICALL GLboolean IsRenderbufferOES(GLuint renderbuffer);
    209 GL_APICALL void BindRenderbufferOES(GLenum target, GLuint renderbuffer);
    210 GL_APICALL void DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers);
    211 GL_APICALL void GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers);
    212 GL_APICALL void RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
    213 GL_APICALL void GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params);
    214 GL_APICALL GLboolean IsFramebufferOES(GLuint framebuffer);
    215 GL_APICALL void BindFramebufferOES(GLenum target, GLuint framebuffer);
    216 GL_APICALL void DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers);
    217 GL_APICALL void GenFramebuffersOES(GLsizei n, GLuint* framebuffers);
    218 GL_APICALL GLenum CheckFramebufferStatusOES(GLenum target);
    219 GL_APICALL void FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
    220 GL_APICALL void FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
    221 GL_APICALL void GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params);
    222 GL_APICALL void GenerateMipmapOES(GLenum target);
    223 GL_APICALL void DrawBuffersEXT(GLsizei n, const GLenum *bufs);
    224 }
    225 
    226 extern "C"
    227 {
    228 GL_APICALL void GL_APIENTRY glActiveTexture(GLenum texture)
    229 {
    230 	return es2::ActiveTexture(texture);
    231 }
    232 
    233 GL_APICALL void GL_APIENTRY glAttachShader(GLuint program, GLuint shader)
    234 {
    235 	return es2::AttachShader(program, shader);
    236 }
    237 
    238 GL_APICALL void GL_APIENTRY glBeginQueryEXT(GLenum target, GLuint name)
    239 {
    240 	return es2::BeginQueryEXT(target, name);
    241 }
    242 
    243 GL_APICALL void GL_APIENTRY glBindAttribLocation(GLuint program, GLuint index, const GLchar* name)
    244 {
    245 	return es2::BindAttribLocation(program, index, name);
    246 }
    247 
    248 GL_APICALL void GL_APIENTRY glBindBuffer(GLenum target, GLuint buffer)
    249 {
    250 	return es2::BindBuffer(target, buffer);
    251 }
    252 
    253 GL_APICALL void GL_APIENTRY glBindFramebuffer(GLenum target, GLuint framebuffer)
    254 {
    255 	return es2::BindFramebuffer(target, framebuffer);
    256 }
    257 
    258 GL_APICALL void GL_APIENTRY glBindFramebufferOES(GLenum target, GLuint framebuffer)
    259 {
    260 	return es2::BindFramebuffer(target, framebuffer);
    261 }
    262 
    263 GL_APICALL void GL_APIENTRY glBindRenderbuffer(GLenum target, GLuint renderbuffer)
    264 {
    265 	return es2::BindRenderbuffer(target, renderbuffer);
    266 }
    267 
    268 GL_APICALL void GL_APIENTRY glBindRenderbufferOES(GLenum target, GLuint renderbuffer)
    269 {
    270 	return es2::BindRenderbuffer(target, renderbuffer);
    271 }
    272 
    273 GL_APICALL void GL_APIENTRY glBindTexture(GLenum target, GLuint texture)
    274 {
    275 	return es2::BindTexture(target, texture);
    276 }
    277 
    278 GL_APICALL void GL_APIENTRY glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
    279 {
    280 	return es2::BlendColor(red, green, blue, alpha);
    281 }
    282 
    283 GL_APICALL void GL_APIENTRY glBlendEquation(GLenum mode)
    284 {
    285 	return es2::BlendEquation(mode);
    286 }
    287 
    288 GL_APICALL void GL_APIENTRY glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
    289 {
    290 	return es2::BlendEquationSeparate(modeRGB, modeAlpha);
    291 }
    292 
    293 GL_APICALL void GL_APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor)
    294 {
    295 	return es2::BlendFunc(sfactor, dfactor);
    296 }
    297 
    298 GL_APICALL void GL_APIENTRY glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
    299 {
    300 	return es2::BlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
    301 }
    302 
    303 GL_APICALL void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
    304 {
    305 	return es2::BufferData(target, size, data, usage);
    306 }
    307 
    308 GL_APICALL void GL_APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
    309 {
    310 	return es2::BufferSubData(target, offset, size, data);
    311 }
    312 
    313 GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus(GLenum target)
    314 {
    315 	return es2::CheckFramebufferStatus(target);
    316 }
    317 
    318 GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatusOES(GLenum target)
    319 {
    320 	return es2::CheckFramebufferStatus(target);
    321 }
    322 
    323 GL_APICALL void GL_APIENTRY glClear(GLbitfield mask)
    324 {
    325 	return es2::Clear(mask);
    326 }
    327 
    328 GL_APICALL void GL_APIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
    329 {
    330 	return es2::ClearColor(red, green, blue, alpha);
    331 }
    332 
    333 GL_APICALL void GL_APIENTRY glClearDepthf(GLclampf depth)
    334 {
    335 	return es2::ClearDepthf(depth);
    336 }
    337 
    338 GL_APICALL void GL_APIENTRY glClearStencil(GLint s)
    339 {
    340 	return es2::ClearStencil(s);
    341 }
    342 
    343 GL_APICALL void GL_APIENTRY glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
    344 {
    345 	return es2::ColorMask(red, green, blue, alpha);
    346 }
    347 
    348 GL_APICALL void GL_APIENTRY glCompileShader(GLuint shader)
    349 {
    350 	return es2::CompileShader(shader);
    351 }
    352 
    353 GL_APICALL void GL_APIENTRY glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
    354                                                    GLint border, GLsizei imageSize, const GLvoid* data)
    355 {
    356 	return es2::CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
    357 }
    358 
    359 GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
    360                                                       GLenum format, GLsizei imageSize, const GLvoid* data)
    361 {
    362 	return es2::CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
    363 }
    364 
    365 GL_APICALL void GL_APIENTRY glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
    366 {
    367 	return es2::CopyTexImage2D(target, level, internalformat, x, y, width, height, border);
    368 }
    369 
    370 GL_APICALL void GL_APIENTRY glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
    371 {
    372 	return es2::CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
    373 }
    374 
    375 GL_APICALL GLuint GL_APIENTRY glCreateProgram(void)
    376 {
    377 	return es2::CreateProgram();
    378 }
    379 
    380 GL_APICALL GLuint GL_APIENTRY glCreateShader(GLenum type)
    381 {
    382 	return es2::CreateShader(type);
    383 }
    384 
    385 GL_APICALL void GL_APIENTRY glCullFace(GLenum mode)
    386 {
    387 	return es2::CullFace(mode);
    388 }
    389 
    390 GL_APICALL void GL_APIENTRY glDeleteBuffers(GLsizei n, const GLuint* buffers)
    391 {
    392 	return es2::DeleteBuffers(n, buffers);
    393 }
    394 
    395 GL_APICALL void GL_APIENTRY glDeleteFencesNV(GLsizei n, const GLuint* fences)
    396 {
    397 	return es2::DeleteFencesNV(n, fences);
    398 }
    399 
    400 GL_APICALL void GL_APIENTRY glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
    401 {
    402 	return es2::DeleteFramebuffers(n, framebuffers);
    403 }
    404 
    405 GL_APICALL void GL_APIENTRY glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers)
    406 {
    407 	return es2::DeleteFramebuffers(n, framebuffers);
    408 }
    409 
    410 GL_APICALL void GL_APIENTRY glDeleteProgram(GLuint program)
    411 {
    412 	return es2::DeleteProgram(program);
    413 }
    414 
    415 GL_APICALL void GL_APIENTRY glDeleteQueriesEXT(GLsizei n, const GLuint *ids)
    416 {
    417 	return es2::DeleteQueriesEXT(n, ids);
    418 }
    419 
    420 GL_APICALL void GL_APIENTRY glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
    421 {
    422 	return es2::DeleteRenderbuffers(n, renderbuffers);
    423 }
    424 
    425 GL_APICALL void GL_APIENTRY glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers)
    426 {
    427 	return es2::DeleteRenderbuffers(n, renderbuffers);
    428 }
    429 
    430 GL_APICALL void GL_APIENTRY glDeleteShader(GLuint shader)
    431 {
    432 	return es2::DeleteShader(shader);
    433 }
    434 
    435 GL_APICALL void GL_APIENTRY glDeleteTextures(GLsizei n, const GLuint* textures)
    436 {
    437 	return es2::DeleteTextures(n, textures);
    438 }
    439 
    440 GL_APICALL void GL_APIENTRY glDepthFunc(GLenum func)
    441 {
    442 	return es2::DepthFunc(func);
    443 }
    444 
    445 GL_APICALL void GL_APIENTRY glDepthMask(GLboolean flag)
    446 {
    447 	return es2::DepthMask(flag);
    448 }
    449 
    450 GL_APICALL void GL_APIENTRY glDepthRangef(GLclampf zNear, GLclampf zFar)
    451 {
    452 	return es2::DepthRangef(zNear, zFar);
    453 }
    454 
    455 GL_APICALL void GL_APIENTRY glDetachShader(GLuint program, GLuint shader)
    456 {
    457 	return es2::DetachShader(program, shader);
    458 }
    459 
    460 GL_APICALL void GL_APIENTRY glDisable(GLenum cap)
    461 {
    462 	return es2::Disable(cap);
    463 }
    464 
    465 GL_APICALL void GL_APIENTRY glDisableVertexAttribArray(GLuint index)
    466 {
    467 	return es2::DisableVertexAttribArray(index);
    468 }
    469 
    470 GL_APICALL void GL_APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count)
    471 {
    472 	return es2::DrawArrays(mode, first, count);
    473 }
    474 
    475 GL_APICALL void GL_APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
    476 {
    477 	return es2::DrawElements(mode, count, type, indices);
    478 }
    479 
    480 GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
    481 {
    482 	return es2::DrawArraysInstancedEXT(mode, first, count, instanceCount);
    483 }
    484 
    485 GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount)
    486 {
    487 	return es2::DrawElementsInstancedEXT(mode, count, type, indices, instanceCount);
    488 }
    489 
    490 GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT(GLuint index, GLuint divisor)
    491 {
    492 	return es2::VertexAttribDivisorEXT(index, divisor);
    493 }
    494 
    495 GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
    496 {
    497 	return es2::DrawArraysInstancedANGLE(mode, first, count, instanceCount);
    498 }
    499 
    500 GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount)
    501 {
    502 	return es2::DrawElementsInstancedANGLE(mode, count, type, indices, instanceCount);
    503 }
    504 
    505 GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE(GLuint index, GLuint divisor)
    506 {
    507 	return es2::VertexAttribDivisorANGLE(index, divisor);
    508 }
    509 
    510 GL_APICALL void GL_APIENTRY glEnable(GLenum cap)
    511 {
    512 	return es2::Enable(cap);
    513 }
    514 
    515 GL_APICALL void GL_APIENTRY glEnableVertexAttribArray(GLuint index)
    516 {
    517 	return es2::EnableVertexAttribArray(index);
    518 }
    519 
    520 GL_APICALL void GL_APIENTRY glEndQueryEXT(GLenum target)
    521 {
    522 	return es2::EndQueryEXT(target);
    523 }
    524 
    525 GL_APICALL void GL_APIENTRY glFinishFenceNV(GLuint fence)
    526 {
    527 	return es2::FinishFenceNV(fence);
    528 }
    529 
    530 GL_APICALL void GL_APIENTRY glFinish(void)
    531 {
    532 	return es2::Finish();
    533 }
    534 
    535 GL_APICALL void GL_APIENTRY glFlush(void)
    536 {
    537 	return es2::Flush();
    538 }
    539 
    540 GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
    541 {
    542 	return es2::FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
    543 }
    544 
    545 GL_APICALL void GL_APIENTRY glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
    546 {
    547 	return es2::FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
    548 }
    549 
    550 GL_APICALL void GL_APIENTRY glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
    551 {
    552 	return es2::FramebufferTexture2D(target, attachment, textarget, texture, level);
    553 }
    554 
    555 GL_APICALL void GL_APIENTRY glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
    556 {
    557 	return es2::FramebufferTexture2D(target, attachment, textarget, texture, level);
    558 }
    559 
    560 GL_APICALL void GL_APIENTRY glFrontFace(GLenum mode)
    561 {
    562 	return es2::FrontFace(mode);
    563 }
    564 
    565 GL_APICALL void GL_APIENTRY glGenBuffers(GLsizei n, GLuint* buffers)
    566 {
    567 	return es2::GenBuffers(n, buffers);
    568 }
    569 
    570 GL_APICALL void GL_APIENTRY glGenerateMipmap(GLenum target)
    571 {
    572 	return es2::GenerateMipmap(target);
    573 }
    574 
    575 GL_APICALL void GL_APIENTRY glGenerateMipmapOES(GLenum target)
    576 {
    577 	return es2::GenerateMipmap(target);
    578 }
    579 
    580 GL_APICALL void GL_APIENTRY glGenFencesNV(GLsizei n, GLuint* fences)
    581 {
    582 	return es2::GenFencesNV(n, fences);
    583 }
    584 
    585 GL_APICALL void GL_APIENTRY glGenFramebuffers(GLsizei n, GLuint* framebuffers)
    586 {
    587 	return es2::GenFramebuffers(n, framebuffers);
    588 }
    589 
    590 GL_APICALL void GL_APIENTRY glGenFramebuffersOES(GLsizei n, GLuint* framebuffers)
    591 {
    592 	return es2::GenFramebuffers(n, framebuffers);
    593 }
    594 
    595 GL_APICALL void GL_APIENTRY glGenQueriesEXT(GLsizei n, GLuint* ids)
    596 {
    597 	return es2::GenQueriesEXT(n, ids);
    598 }
    599 
    600 GL_APICALL void GL_APIENTRY glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
    601 {
    602 	return es2::GenRenderbuffers(n, renderbuffers);
    603 }
    604 
    605 GL_APICALL void GL_APIENTRY glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers)
    606 {
    607 	return es2::GenRenderbuffers(n, renderbuffers);
    608 }
    609 
    610 GL_APICALL void GL_APIENTRY glGenTextures(GLsizei n, GLuint* textures)
    611 {
    612 	return es2::GenTextures(n, textures);
    613 }
    614 
    615 GL_APICALL void GL_APIENTRY glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
    616 {
    617 	return es2::GetActiveAttrib(program, index, bufsize, length, size, type, name);
    618 }
    619 
    620 GL_APICALL void GL_APIENTRY glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
    621 {
    622 	return es2::GetActiveUniform(program, index, bufsize, length, size, type, name);
    623 }
    624 
    625 GL_APICALL void GL_APIENTRY glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
    626 {
    627 	return es2::GetAttachedShaders(program, maxcount, count, shaders);
    628 }
    629 
    630 GL_APICALL int GL_APIENTRY glGetAttribLocation(GLuint program, const GLchar* name)
    631 {
    632 	return es2::GetAttribLocation(program, name);
    633 }
    634 
    635 GL_APICALL void GL_APIENTRY glGetBooleanv(GLenum pname, GLboolean* params)
    636 {
    637 	return es2::GetBooleanv(pname, params);
    638 }
    639 
    640 GL_APICALL void GL_APIENTRY glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
    641 {
    642 	return es2::GetBufferParameteriv(target, pname, params);
    643 }
    644 
    645 GL_APICALL GLenum GL_APIENTRY glGetError(void)
    646 {
    647 	return es2::GetError();
    648 }
    649 
    650 GL_APICALL void GL_APIENTRY glGetFenceivNV(GLuint fence, GLenum pname, GLint *params)
    651 {
    652 	return es2::GetFenceivNV(fence, pname, params);
    653 }
    654 
    655 GL_APICALL void GL_APIENTRY glGetFloatv(GLenum pname, GLfloat* params)
    656 {
    657 	return es2::GetFloatv(pname, params);
    658 }
    659 
    660 GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
    661 {
    662 	return es2::GetFramebufferAttachmentParameteriv(target, attachment, pname, params);
    663 }
    664 
    665 GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params)
    666 {
    667 	return es2::GetFramebufferAttachmentParameteriv(target, attachment, pname, params);
    668 }
    669 
    670 GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT(void)
    671 {
    672 	return es2::GetGraphicsResetStatusEXT();
    673 }
    674 
    675 GL_APICALL void GL_APIENTRY glGetIntegerv(GLenum pname, GLint* params)
    676 {
    677 	return es2::GetIntegerv(pname, params);
    678 }
    679 
    680 GL_APICALL void GL_APIENTRY glGetProgramiv(GLuint program, GLenum pname, GLint* params)
    681 {
    682 	return es2::GetProgramiv(program, pname, params);
    683 }
    684 
    685 GL_APICALL void GL_APIENTRY glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
    686 {
    687 	return es2::GetProgramInfoLog(program, bufsize, length, infolog);
    688 }
    689 
    690 GL_APICALL void GL_APIENTRY glGetQueryivEXT(GLenum target, GLenum pname, GLint *params)
    691 {
    692 	return es2::GetQueryivEXT(target, pname, params);
    693 }
    694 
    695 GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT(GLuint name, GLenum pname, GLuint *params)
    696 {
    697 	return es2::GetQueryObjectuivEXT(name, pname, params);
    698 }
    699 
    700 GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
    701 {
    702 	return es2::GetRenderbufferParameteriv(target, pname, params);
    703 }
    704 
    705 GL_APICALL void GL_APIENTRY glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params)
    706 {
    707 	return es2::GetRenderbufferParameteriv(target, pname, params);
    708 }
    709 
    710 GL_APICALL void GL_APIENTRY glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
    711 {
    712 	return es2::GetShaderiv(shader, pname, params);
    713 }
    714 
    715 GL_APICALL void GL_APIENTRY glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
    716 {
    717 	return es2::GetShaderInfoLog(shader, bufsize, length, infolog);
    718 }
    719 
    720 GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
    721 {
    722 	return es2::GetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
    723 }
    724 
    725 GL_APICALL void GL_APIENTRY glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
    726 {
    727 	return es2::GetShaderSource(shader, bufsize, length, source);
    728 }
    729 
    730 GL_APICALL const GLubyte* GL_APIENTRY glGetString(GLenum name)
    731 {
    732 	return es2::GetString(name);
    733 }
    734 
    735 GL_APICALL void GL_APIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
    736 {
    737 	return es2::GetTexParameterfv(target, pname, params);
    738 }
    739 
    740 GL_APICALL void GL_APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
    741 {
    742 	return es2::GetTexParameteriv(target, pname, params);
    743 }
    744 
    745 GL_APICALL void GL_APIENTRY glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
    746 {
    747 	return es2::GetnUniformfvEXT(program, location, bufSize, params);
    748 }
    749 
    750 GL_APICALL void GL_APIENTRY glGetUniformfv(GLuint program, GLint location, GLfloat* params)
    751 {
    752 	return es2::GetUniformfv(program, location, params);
    753 }
    754 
    755 GL_APICALL void GL_APIENTRY glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* params)
    756 {
    757 	return es2::GetnUniformivEXT(program, location, bufSize, params);
    758 }
    759 
    760 GL_APICALL void GL_APIENTRY glGetUniformiv(GLuint program, GLint location, GLint* params)
    761 {
    762 	return es2::GetUniformiv(program, location, params);
    763 }
    764 
    765 GL_APICALL int GL_APIENTRY glGetUniformLocation(GLuint program, const GLchar* name)
    766 {
    767 	return es2::GetUniformLocation(program, name);
    768 }
    769 
    770 GL_APICALL void GL_APIENTRY glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
    771 {
    772 	return es2::GetVertexAttribfv(index, pname, params);
    773 }
    774 
    775 GL_APICALL void GL_APIENTRY glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
    776 {
    777 	return es2::GetVertexAttribiv(index, pname, params);
    778 }
    779 
    780 GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer)
    781 {
    782 	return es2::GetVertexAttribPointerv(index, pname, pointer);
    783 }
    784 
    785 GL_APICALL void GL_APIENTRY glHint(GLenum target, GLenum mode)
    786 {
    787 	return es2::Hint(target, mode);
    788 }
    789 
    790 GL_APICALL GLboolean GL_APIENTRY glIsBuffer(GLuint buffer)
    791 {
    792 	return es2::IsBuffer(buffer);
    793 }
    794 
    795 GL_APICALL GLboolean GL_APIENTRY glIsEnabled(GLenum cap)
    796 {
    797 	return es2::IsEnabled(cap);
    798 }
    799 
    800 GL_APICALL GLboolean GL_APIENTRY glIsFenceNV(GLuint fence)
    801 {
    802 	return es2::IsFenceNV(fence);
    803 }
    804 
    805 GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer(GLuint framebuffer)
    806 {
    807 	return es2::IsFramebuffer(framebuffer);
    808 }
    809 
    810 GL_APICALL GLboolean GL_APIENTRY glIsFramebufferOES(GLuint framebuffer)
    811 {
    812 	return es2::IsFramebuffer(framebuffer);
    813 }
    814 
    815 GL_APICALL GLboolean GL_APIENTRY glIsProgram(GLuint program)
    816 {
    817 	return es2::IsProgram(program);
    818 }
    819 
    820 GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT(GLuint name)
    821 {
    822 	return es2::IsQueryEXT(name);
    823 }
    824 
    825 GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer(GLuint renderbuffer)
    826 {
    827 	return es2::IsRenderbuffer(renderbuffer);
    828 }
    829 
    830 GL_APICALL GLboolean GL_APIENTRY glIsRenderbufferOES(GLuint renderbuffer)
    831 {
    832 	return es2::IsRenderbuffer(renderbuffer);
    833 }
    834 
    835 GL_APICALL GLboolean GL_APIENTRY glIsShader(GLuint shader)
    836 {
    837 	return es2::IsShader(shader);
    838 }
    839 
    840 GL_APICALL GLboolean GL_APIENTRY glIsTexture(GLuint texture)
    841 {
    842 	return es2::IsTexture(texture);
    843 }
    844 
    845 GL_APICALL void GL_APIENTRY glLineWidth(GLfloat width)
    846 {
    847 	return es2::LineWidth(width);
    848 }
    849 
    850 GL_APICALL void GL_APIENTRY glLinkProgram(GLuint program)
    851 {
    852 	return es2::LinkProgram(program);
    853 }
    854 
    855 GL_APICALL void GL_APIENTRY glPixelStorei(GLenum pname, GLint param)
    856 {
    857 	return es2::PixelStorei(pname, param);
    858 }
    859 
    860 GL_APICALL void GL_APIENTRY glPolygonOffset(GLfloat factor, GLfloat units)
    861 {
    862 	return es2::PolygonOffset(factor, units);
    863 }
    864 
    865 GL_APICALL void GL_APIENTRY glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
    866                                              GLenum format, GLenum type, GLsizei bufSize, GLvoid *data)
    867 {
    868 	return es2::ReadnPixelsEXT(x, y, width, height, format, type, bufSize, data);
    869 }
    870 
    871 GL_APICALL void GL_APIENTRY glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
    872 {
    873 	return es2::ReadPixels(x, y, width, height, format, type, pixels);
    874 }
    875 
    876 GL_APICALL void GL_APIENTRY glReleaseShaderCompiler(void)
    877 {
    878 	return es2::ReleaseShaderCompiler();
    879 }
    880 
    881 GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
    882 {
    883 	return es2::RenderbufferStorageMultisample(target, samples, internalformat, width, height);
    884 }
    885 
    886 GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
    887 {
    888 	return es2::RenderbufferStorageMultisampleANGLE(target, samples, internalformat, width, height);
    889 }
    890 
    891 GL_APICALL void GL_APIENTRY glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
    892 {
    893 	return es2::RenderbufferStorage(target, internalformat, width, height);
    894 }
    895 
    896 GL_APICALL void GL_APIENTRY glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
    897 {
    898 	return es2::RenderbufferStorage(target, internalformat, width, height);
    899 }
    900 
    901 GL_APICALL void GL_APIENTRY glSampleCoverage(GLclampf value, GLboolean invert)
    902 {
    903 	return es2::SampleCoverage(value, invert);
    904 }
    905 
    906 GL_APICALL void GL_APIENTRY glSetFenceNV(GLuint fence, GLenum condition)
    907 {
    908 	return es2::SetFenceNV(fence, condition);
    909 }
    910 
    911 GL_APICALL void GL_APIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
    912 {
    913 	return es2::Scissor(x, y, width, height);
    914 }
    915 
    916 GL_APICALL void GL_APIENTRY glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length)
    917 {
    918 	return es2::ShaderBinary(n, shaders, binaryformat, binary, length);
    919 }
    920 
    921 GL_APICALL void GL_APIENTRY glShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length)
    922 {
    923 	return es2::ShaderSource(shader, count, string, length);
    924 }
    925 
    926 GL_APICALL void GL_APIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask)
    927 {
    928 	return es2::StencilFunc(func, ref, mask);
    929 }
    930 
    931 GL_APICALL void GL_APIENTRY glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
    932 {
    933 	return es2::StencilFuncSeparate(face, func, ref, mask);
    934 }
    935 
    936 GL_APICALL void GL_APIENTRY glStencilMask(GLuint mask)
    937 {
    938 	return es2::StencilMask(mask);
    939 }
    940 
    941 GL_APICALL void GL_APIENTRY glStencilMaskSeparate(GLenum face, GLuint mask)
    942 {
    943 	return es2::StencilMaskSeparate(face, mask);
    944 }
    945 
    946 GL_APICALL void GL_APIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
    947 {
    948 	return es2::StencilOp(fail, zfail, zpass);
    949 }
    950 
    951 GL_APICALL void GL_APIENTRY glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
    952 {
    953 	return es2::StencilOpSeparate(face, fail, zfail, zpass);
    954 }
    955 
    956 GLboolean GL_APIENTRY glTestFenceNV(GLuint fence)
    957 {
    958 	return es2::TestFenceNV(fence);
    959 }
    960 
    961 GL_APICALL void GL_APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
    962                                          GLint border, GLenum format, GLenum type, const GLvoid* pixels)
    963 {
    964 	return es2::TexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
    965 }
    966 
    967 GL_APICALL void GL_APIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param)
    968 {
    969 	return es2::TexParameterf(target, pname, param);
    970 }
    971 
    972 GL_APICALL void GL_APIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
    973 {
    974 	return es2::TexParameterfv(target, pname, params);
    975 }
    976 
    977 GL_APICALL void GL_APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param)
    978 {
    979 	return es2::TexParameteri(target, pname, param);
    980 }
    981 
    982 GL_APICALL void GL_APIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint* params)
    983 {
    984 	return es2::TexParameteriv(target, pname, params);
    985 }
    986 
    987 GL_APICALL void GL_APIENTRY glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
    988                                             GLenum format, GLenum type, const GLvoid* pixels)
    989 {
    990 	return es2::TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
    991 }
    992 
    993 GL_APICALL void GL_APIENTRY glUniform1f(GLint location, GLfloat x)
    994 {
    995 	return es2::Uniform1f(location, x);
    996 }
    997 
    998 GL_APICALL void GL_APIENTRY glUniform1fv(GLint location, GLsizei count, const GLfloat* v)
    999 {
   1000 	return es2::Uniform1fv(location, count, v);
   1001 }
   1002 
   1003 GL_APICALL void GL_APIENTRY glUniform1i(GLint location, GLint x)
   1004 {
   1005 	return es2::Uniform1i(location, x);
   1006 }
   1007 
   1008 GL_APICALL void GL_APIENTRY glUniform1iv(GLint location, GLsizei count, const GLint* v)
   1009 {
   1010 	return es2::Uniform1iv(location, count, v);
   1011 }
   1012 
   1013 GL_APICALL void GL_APIENTRY glUniform2f(GLint location, GLfloat x, GLfloat y)
   1014 {
   1015 	return es2::Uniform2f(location, x, y);
   1016 }
   1017 
   1018 GL_APICALL void GL_APIENTRY glUniform2fv(GLint location, GLsizei count, const GLfloat* v)
   1019 {
   1020 	return es2::Uniform2fv(location, count, v);
   1021 }
   1022 
   1023 GL_APICALL void GL_APIENTRY glUniform2i(GLint location, GLint x, GLint y)
   1024 {
   1025 	return es2::Uniform2i(location, x, y);
   1026 }
   1027 
   1028 GL_APICALL void GL_APIENTRY glUniform2iv(GLint location, GLsizei count, const GLint* v)
   1029 {
   1030 	return es2::Uniform2iv(location, count, v);
   1031 }
   1032 
   1033 GL_APICALL void GL_APIENTRY glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
   1034 {
   1035 	return es2::Uniform3f(location, x, y, z);
   1036 }
   1037 
   1038 GL_APICALL void GL_APIENTRY glUniform3fv(GLint location, GLsizei count, const GLfloat* v)
   1039 {
   1040 	return es2::Uniform3fv(location, count, v);
   1041 }
   1042 
   1043 GL_APICALL void GL_APIENTRY glUniform3i(GLint location, GLint x, GLint y, GLint z)
   1044 {
   1045 	return es2::Uniform3i(location, x, y, z);
   1046 }
   1047 
   1048 GL_APICALL void GL_APIENTRY glUniform3iv(GLint location, GLsizei count, const GLint* v)
   1049 {
   1050 	return es2::Uniform3iv(location, count, v);
   1051 }
   1052 
   1053 GL_APICALL void GL_APIENTRY glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
   1054 {
   1055 	return es2::Uniform4f(location, x, y, z, w);
   1056 }
   1057 
   1058 GL_APICALL void GL_APIENTRY glUniform4fv(GLint location, GLsizei count, const GLfloat* v)
   1059 {
   1060 	return es2::Uniform4fv(location, count, v);
   1061 }
   1062 
   1063 GL_APICALL void GL_APIENTRY glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
   1064 {
   1065 	return es2::Uniform4i(location, x, y, z, w);
   1066 }
   1067 
   1068 GL_APICALL void GL_APIENTRY glUniform4iv(GLint location, GLsizei count, const GLint* v)
   1069 {
   1070 	return es2::Uniform4iv(location, count, v);
   1071 }
   1072 
   1073 GL_APICALL void GL_APIENTRY glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
   1074 {
   1075 	return es2::UniformMatrix2fv(location, count, transpose, value);
   1076 }
   1077 
   1078 GL_APICALL void GL_APIENTRY glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
   1079 {
   1080 	return es2::UniformMatrix3fv(location, count, transpose, value);
   1081 }
   1082 
   1083 GL_APICALL void GL_APIENTRY glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
   1084 {
   1085 	return es2::UniformMatrix4fv(location, count, transpose, value);
   1086 }
   1087 
   1088 GL_APICALL void GL_APIENTRY glUseProgram(GLuint program)
   1089 {
   1090 	return es2::UseProgram(program);
   1091 }
   1092 
   1093 GL_APICALL void GL_APIENTRY glValidateProgram(GLuint program)
   1094 {
   1095 	return es2::ValidateProgram(program);
   1096 }
   1097 
   1098 GL_APICALL void GL_APIENTRY glVertexAttrib1f(GLuint index, GLfloat x)
   1099 {
   1100 	return es2::VertexAttrib1f(index, x);
   1101 }
   1102 
   1103 GL_APICALL void GL_APIENTRY glVertexAttrib1fv(GLuint index, const GLfloat* values)
   1104 {
   1105 	return es2::VertexAttrib1fv(index, values);
   1106 }
   1107 
   1108 GL_APICALL void GL_APIENTRY glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y)
   1109 {
   1110 	return es2::VertexAttrib2f(index, x, y);
   1111 }
   1112 
   1113 GL_APICALL void GL_APIENTRY glVertexAttrib2fv(GLuint index, const GLfloat* values)
   1114 {
   1115 	return es2::VertexAttrib2fv(index, values);
   1116 }
   1117 
   1118 GL_APICALL void GL_APIENTRY glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z)
   1119 {
   1120 	return es2::VertexAttrib3f(index, x, y, z);
   1121 }
   1122 
   1123 GL_APICALL void GL_APIENTRY glVertexAttrib3fv(GLuint index, const GLfloat* values)
   1124 {
   1125 	return es2::VertexAttrib3fv(index, values);
   1126 }
   1127 
   1128 GL_APICALL void GL_APIENTRY glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
   1129 {
   1130 	return es2::VertexAttrib4f(index, x, y, z, w);
   1131 }
   1132 
   1133 GL_APICALL void GL_APIENTRY glVertexAttrib4fv(GLuint index, const GLfloat* values)
   1134 {
   1135 	return es2::VertexAttrib4fv(index, values);
   1136 }
   1137 
   1138 GL_APICALL void GL_APIENTRY glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr)
   1139 {
   1140 	return es2::VertexAttribPointer(index, size, type, normalized, stride, ptr);
   1141 }
   1142 
   1143 GL_APICALL void GL_APIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
   1144 {
   1145 	return es2::Viewport(x, y, width, height);
   1146 }
   1147 
   1148 GL_APICALL void GL_APIENTRY glBlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
   1149 {
   1150 	return es2::BlitFramebufferNV(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
   1151 }
   1152 
   1153 GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
   1154                                                    GLbitfield mask, GLenum filter)
   1155 {
   1156 	return es2::BlitFramebufferANGLE(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
   1157 }
   1158 
   1159 GL_APICALL void GL_APIENTRY glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth,
   1160                                             GLint border, GLenum format, GLenum type, const GLvoid* pixels)
   1161 {
   1162 	return es2::TexImage3DOES(target, level, internalformat, width, height, depth, border, format, type, pixels);
   1163 }
   1164 
   1165 GL_APICALL void GL_APIENTRY glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
   1166 {
   1167 	return es2::TexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
   1168 }
   1169 
   1170 GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
   1171 {
   1172 	return es2::CopyTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, x, y, width, height);
   1173 }
   1174 
   1175 GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
   1176 {
   1177 	return es2::CompressedTexImage3DOES(target, level,internalformat, width, height, depth, border, imageSize, data);
   1178 }
   1179 
   1180 GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
   1181 {
   1182 	return es2::CompressedTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
   1183 }
   1184 
   1185 GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
   1186 {
   1187 	return es2::FramebufferTexture3DOES(target, attachment, textarget, texture, level, zoffset);
   1188 }
   1189 
   1190 GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
   1191 {
   1192 	return es2::EGLImageTargetTexture2DOES(target, image);
   1193 }
   1194 
   1195 GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
   1196 {
   1197 	return es2::EGLImageTargetRenderbufferStorageOES(target, image);
   1198 }
   1199 
   1200 GL_APICALL void GL_APIENTRY glDrawBuffersEXT(GLsizei n, const GLenum *bufs)
   1201 {
   1202 	return es2::DrawBuffersEXT(n, bufs);
   1203 }
   1204 
   1205 void GL_APIENTRY Register(const char *licenseKey)
   1206 {
   1207 	// Nothing to do, SwiftShader is open-source
   1208 }
   1209 }
   1210 
   1211 egl::Context *es2CreateContext(egl::Display *display, const egl::Context *shareContext, int clientVersion, const egl::Config *config);
   1212 extern "C" __eglMustCastToProperFunctionPointerType es2GetProcAddress(const char *procname);
   1213 egl::Image *createBackBuffer(int width, int height, sw::Format format, int multiSampleDepth);
   1214 egl::Image *createBackBufferFromClientBuffer(const egl::ClientBuffer& clientBuffer);
   1215 egl::Image *createDepthStencil(int width, int height, sw::Format format, int multiSampleDepth);
   1216 sw::FrameBuffer *createFrameBuffer(void *nativeDisplay, EGLNativeWindowType window, int width, int height);
   1217 
   1218 LibGLESv2exports::LibGLESv2exports()
   1219 {
   1220 	this->glActiveTexture = es2::ActiveTexture;
   1221 	this->glAttachShader = es2::AttachShader;
   1222 	this->glBeginQueryEXT = es2::BeginQueryEXT;
   1223 	this->glBindAttribLocation = es2::BindAttribLocation;
   1224 	this->glBindBuffer = es2::BindBuffer;
   1225 	this->glBindFramebuffer = es2::BindFramebuffer;
   1226 	this->glBindRenderbuffer = es2::BindRenderbuffer;
   1227 	this->glBindTexture = es2::BindTexture;
   1228 	this->glBlendColor = es2::BlendColor;
   1229 	this->glBlendEquation = es2::BlendEquation;
   1230 	this->glBlendEquationSeparate = es2::BlendEquationSeparate;
   1231 	this->glBlendFunc = es2::BlendFunc;
   1232 	this->glBlendFuncSeparate = es2::BlendFuncSeparate;
   1233 	this->glBufferData = es2::BufferData;
   1234 	this->glBufferSubData = es2::BufferSubData;
   1235 	this->glCheckFramebufferStatus = es2::CheckFramebufferStatus;
   1236 	this->glClear = es2::Clear;
   1237 	this->glClearColor = es2::ClearColor;
   1238 	this->glClearDepthf = es2::ClearDepthf;
   1239 	this->glClearStencil = es2::ClearStencil;
   1240 	this->glColorMask = es2::ColorMask;
   1241 	this->glCompileShader = es2::CompileShader;
   1242 	this->glCompressedTexImage2D = es2::CompressedTexImage2D;
   1243 	this->glCompressedTexSubImage2D = es2::CompressedTexSubImage2D;
   1244 	this->glCopyTexImage2D = es2::CopyTexImage2D;
   1245 	this->glCopyTexSubImage2D = es2::CopyTexSubImage2D;
   1246 	this->glCreateProgram = es2::CreateProgram;
   1247 	this->glCreateShader = es2::CreateShader;
   1248 	this->glCullFace = es2::CullFace;
   1249 	this->glDeleteBuffers = es2::DeleteBuffers;
   1250 	this->glDeleteFencesNV = es2::DeleteFencesNV;
   1251 	this->glDeleteFramebuffers = es2::DeleteFramebuffers;
   1252 	this->glDeleteProgram = es2::DeleteProgram;
   1253 	this->glDeleteQueriesEXT = es2::DeleteQueriesEXT;
   1254 	this->glDeleteRenderbuffers = es2::DeleteRenderbuffers;
   1255 	this->glDeleteShader = es2::DeleteShader;
   1256 	this->glDeleteTextures = es2::DeleteTextures;
   1257 	this->glDepthFunc = es2::DepthFunc;
   1258 	this->glDepthMask = es2::DepthMask;
   1259 	this->glDepthRangef = es2::DepthRangef;
   1260 	this->glDetachShader = es2::DetachShader;
   1261 	this->glDisable = es2::Disable;
   1262 	this->glDisableVertexAttribArray = es2::DisableVertexAttribArray;
   1263 	this->glDrawArrays = es2::DrawArrays;
   1264 	this->glDrawElements = es2::DrawElements;
   1265 	this->glDrawArraysInstancedEXT = es2::DrawArraysInstancedEXT;
   1266 	this->glDrawElementsInstancedEXT = es2::DrawElementsInstancedEXT;
   1267 	this->glVertexAttribDivisorEXT = es2::VertexAttribDivisorEXT;
   1268 	this->glDrawArraysInstancedANGLE = es2::DrawArraysInstancedANGLE;
   1269 	this->glDrawElementsInstancedANGLE = es2::DrawElementsInstancedANGLE;
   1270 	this->glVertexAttribDivisorANGLE = es2::VertexAttribDivisorANGLE;
   1271 	this->glEnable = es2::Enable;
   1272 	this->glEnableVertexAttribArray = es2::EnableVertexAttribArray;
   1273 	this->glEndQueryEXT = es2::EndQueryEXT;
   1274 	this->glFinishFenceNV = es2::FinishFenceNV;
   1275 	this->glFinish = es2::Finish;
   1276 	this->glFlush = es2::Flush;
   1277 	this->glFramebufferRenderbuffer = es2::FramebufferRenderbuffer;
   1278 	this->glFramebufferTexture2D = es2::FramebufferTexture2D;
   1279 	this->glFrontFace = es2::FrontFace;
   1280 	this->glGenBuffers = es2::GenBuffers;
   1281 	this->glGenerateMipmap = es2::GenerateMipmap;
   1282 	this->glGenFencesNV = es2::GenFencesNV;
   1283 	this->glGenFramebuffers = es2::GenFramebuffers;
   1284 	this->glGenQueriesEXT = es2::GenQueriesEXT;
   1285 	this->glGenRenderbuffers = es2::GenRenderbuffers;
   1286 	this->glGenTextures = es2::GenTextures;
   1287 	this->glGetActiveAttrib = es2::GetActiveAttrib;
   1288 	this->glGetActiveUniform = es2::GetActiveUniform;
   1289 	this->glGetAttachedShaders = es2::GetAttachedShaders;
   1290 	this->glGetAttribLocation = es2::GetAttribLocation;
   1291 	this->glGetBooleanv = es2::GetBooleanv;
   1292 	this->glGetBufferParameteriv = es2::GetBufferParameteriv;
   1293 	this->glGetError = es2::GetError;
   1294 	this->glGetFenceivNV = es2::GetFenceivNV;
   1295 	this->glGetFloatv = es2::GetFloatv;
   1296 	this->glGetFramebufferAttachmentParameteriv = es2::GetFramebufferAttachmentParameteriv;
   1297 	this->glGetGraphicsResetStatusEXT = es2::GetGraphicsResetStatusEXT;
   1298 	this->glGetIntegerv = es2::GetIntegerv;
   1299 	this->glGetProgramiv = es2::GetProgramiv;
   1300 	this->glGetProgramInfoLog = es2::GetProgramInfoLog;
   1301 	this->glGetQueryivEXT = es2::GetQueryivEXT;
   1302 	this->glGetQueryObjectuivEXT = es2::GetQueryObjectuivEXT;
   1303 	this->glGetRenderbufferParameteriv = es2::GetRenderbufferParameteriv;
   1304 	this->glGetShaderiv = es2::GetShaderiv;
   1305 	this->glGetShaderInfoLog = es2::GetShaderInfoLog;
   1306 	this->glGetShaderPrecisionFormat = es2::GetShaderPrecisionFormat;
   1307 	this->glGetShaderSource = es2::GetShaderSource;
   1308 	this->glGetString = es2::GetString;
   1309 	this->glGetTexParameterfv = es2::GetTexParameterfv;
   1310 	this->glGetTexParameteriv = es2::GetTexParameteriv;
   1311 	this->glGetnUniformfvEXT = es2::GetnUniformfvEXT;
   1312 	this->glGetUniformfv = es2::GetUniformfv;
   1313 	this->glGetnUniformivEXT = es2::GetnUniformivEXT;
   1314 	this->glGetUniformiv = es2::GetUniformiv;
   1315 	this->glGetUniformLocation = es2::GetUniformLocation;
   1316 	this->glGetVertexAttribfv = es2::GetVertexAttribfv;
   1317 	this->glGetVertexAttribiv = es2::GetVertexAttribiv;
   1318 	this->glGetVertexAttribPointerv = es2::GetVertexAttribPointerv;
   1319 	this->glHint = es2::Hint;
   1320 	this->glIsBuffer = es2::IsBuffer;
   1321 	this->glIsEnabled = es2::IsEnabled;
   1322 	this->glIsFenceNV = es2::IsFenceNV;
   1323 	this->glIsFramebuffer = es2::IsFramebuffer;
   1324 	this->glIsProgram = es2::IsProgram;
   1325 	this->glIsQueryEXT = es2::IsQueryEXT;
   1326 	this->glIsRenderbuffer = es2::IsRenderbuffer;
   1327 	this->glIsShader = es2::IsShader;
   1328 	this->glIsTexture = es2::IsTexture;
   1329 	this->glLineWidth = es2::LineWidth;
   1330 	this->glLinkProgram = es2::LinkProgram;
   1331 	this->glPixelStorei = es2::PixelStorei;
   1332 	this->glPolygonOffset = es2::PolygonOffset;
   1333 	this->glReadnPixelsEXT = es2::ReadnPixelsEXT;
   1334 	this->glReadPixels = es2::ReadPixels;
   1335 	this->glReleaseShaderCompiler = es2::ReleaseShaderCompiler;
   1336 	this->glRenderbufferStorageMultisample = es2::RenderbufferStorageMultisample;
   1337 	this->glRenderbufferStorageMultisampleANGLE = es2::RenderbufferStorageMultisampleANGLE;
   1338 	this->glRenderbufferStorage = es2::RenderbufferStorage;
   1339 	this->glSampleCoverage = es2::SampleCoverage;
   1340 	this->glSetFenceNV = es2::SetFenceNV;
   1341 	this->glScissor = es2::Scissor;
   1342 	this->glShaderBinary = es2::ShaderBinary;
   1343 	this->glShaderSource = es2::ShaderSource;
   1344 	this->glStencilFunc = es2::StencilFunc;
   1345 	this->glStencilFuncSeparate = es2::StencilFuncSeparate;
   1346 	this->glStencilMask = es2::StencilMask;
   1347 	this->glStencilMaskSeparate = es2::StencilMaskSeparate;
   1348 	this->glStencilOp = es2::StencilOp;
   1349 	this->glStencilOpSeparate = es2::StencilOpSeparate;
   1350 	this->glTestFenceNV = es2::TestFenceNV;
   1351 	this->glTexImage2D = es2::TexImage2D;
   1352 	this->glTexParameterf = es2::TexParameterf;
   1353 	this->glTexParameterfv = es2::TexParameterfv;
   1354 	this->glTexParameteri = es2::TexParameteri;
   1355 	this->glTexParameteriv = es2::TexParameteriv;
   1356 	this->glTexSubImage2D = es2::TexSubImage2D;
   1357 	this->glUniform1f = es2::Uniform1f;
   1358 	this->glUniform1fv = es2::Uniform1fv;
   1359 	this->glUniform1i = es2::Uniform1i;
   1360 	this->glUniform1iv = es2::Uniform1iv;
   1361 	this->glUniform2f = es2::Uniform2f;
   1362 	this->glUniform2fv = es2::Uniform2fv;
   1363 	this->glUniform2i = es2::Uniform2i;
   1364 	this->glUniform2iv = es2::Uniform2iv;
   1365 	this->glUniform3f = es2::Uniform3f;
   1366 	this->glUniform3fv = es2::Uniform3fv;
   1367 	this->glUniform3i = es2::Uniform3i;
   1368 	this->glUniform3iv = es2::Uniform3iv;
   1369 	this->glUniform4f = es2::Uniform4f;
   1370 	this->glUniform4fv = es2::Uniform4fv;
   1371 	this->glUniform4i = es2::Uniform4i;
   1372 	this->glUniform4iv = es2::Uniform4iv;
   1373 	this->glUniformMatrix2fv = es2::UniformMatrix2fv;
   1374 	this->glUniformMatrix3fv = es2::UniformMatrix3fv;
   1375 	this->glUniformMatrix4fv = es2::UniformMatrix4fv;
   1376 	this->glUseProgram = es2::UseProgram;
   1377 	this->glValidateProgram = es2::ValidateProgram;
   1378 	this->glVertexAttrib1f = es2::VertexAttrib1f;
   1379 	this->glVertexAttrib1fv = es2::VertexAttrib1fv;
   1380 	this->glVertexAttrib2f = es2::VertexAttrib2f;
   1381 	this->glVertexAttrib2fv = es2::VertexAttrib2fv;
   1382 	this->glVertexAttrib3f = es2::VertexAttrib3f;
   1383 	this->glVertexAttrib3fv = es2::VertexAttrib3fv;
   1384 	this->glVertexAttrib4f = es2::VertexAttrib4f;
   1385 	this->glVertexAttrib4fv = es2::VertexAttrib4fv;
   1386 	this->glVertexAttribPointer = es2::VertexAttribPointer;
   1387 	this->glViewport = es2::Viewport;
   1388 	this->glBlitFramebufferNV = es2::BlitFramebufferNV;
   1389 	this->glBlitFramebufferANGLE = es2::BlitFramebufferANGLE;
   1390 	this->glTexImage3DOES = es2::TexImage3DOES;
   1391 	this->glTexSubImage3DOES = es2::TexSubImage3DOES;
   1392 	this->glCopyTexSubImage3DOES = es2::CopyTexSubImage3DOES;
   1393 	this->glCompressedTexImage3DOES = es2::CompressedTexImage3DOES;
   1394 	this->glCompressedTexSubImage3DOES = es2::CompressedTexSubImage3DOES;
   1395 	this->glFramebufferTexture3DOES = es2::FramebufferTexture3DOES;
   1396 	this->glEGLImageTargetTexture2DOES = es2::EGLImageTargetTexture2DOES;
   1397 	this->glEGLImageTargetRenderbufferStorageOES = es2::EGLImageTargetRenderbufferStorageOES;
   1398 	this->glIsRenderbufferOES = es2::IsRenderbufferOES;
   1399 	this->glBindRenderbufferOES = es2::BindRenderbufferOES;
   1400 	this->glDeleteRenderbuffersOES = es2::DeleteRenderbuffersOES;
   1401 	this->glGenRenderbuffersOES = es2::GenRenderbuffersOES;
   1402 	this->glRenderbufferStorageOES = es2::RenderbufferStorageOES;
   1403 	this->glGetRenderbufferParameterivOES = es2::GetRenderbufferParameterivOES;
   1404 	this->glIsFramebufferOES = es2::IsFramebufferOES;
   1405 	this->glBindFramebufferOES = es2::BindFramebufferOES;
   1406 	this->glDeleteFramebuffersOES = es2::DeleteFramebuffersOES;
   1407 	this->glGenFramebuffersOES = es2::GenFramebuffersOES;
   1408 	this->glCheckFramebufferStatusOES = es2::CheckFramebufferStatusOES;
   1409 	this->glFramebufferRenderbufferOES = es2::FramebufferRenderbufferOES;
   1410 	this->glFramebufferTexture2DOES = es2::FramebufferTexture2DOES;
   1411 	this->glGetFramebufferAttachmentParameterivOES = es2::GetFramebufferAttachmentParameterivOES;
   1412 	this->glGenerateMipmapOES = es2::GenerateMipmapOES;
   1413 	this->glDrawBuffersEXT = es2::DrawBuffersEXT;
   1414 
   1415 	this->es2CreateContext = ::es2CreateContext;
   1416 	this->es2GetProcAddress = ::es2GetProcAddress;
   1417 	this->createBackBuffer = ::createBackBuffer;
   1418 	this->createBackBufferFromClientBuffer = ::createBackBufferFromClientBuffer;
   1419 	this->createDepthStencil = ::createDepthStencil;
   1420 	this->createFrameBuffer = ::createFrameBuffer;
   1421 }
   1422 
   1423 extern "C" GL_APICALL LibGLESv2exports *libGLESv2_swiftshader()
   1424 {
   1425 	static LibGLESv2exports libGLESv2;
   1426 	return &libGLESv2;
   1427 }
   1428 
   1429 LibEGL libEGL;
   1430 LibGLES_CM libGLES_CM;
   1431