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