summaryrefslogtreecommitdiffstats
path: root/gpu/pgl/pgl_proc_address.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/pgl/pgl_proc_address.cc')
-rw-r--r--gpu/pgl/pgl_proc_address.cc315
1 files changed, 315 insertions, 0 deletions
diff --git a/gpu/pgl/pgl_proc_address.cc b/gpu/pgl/pgl_proc_address.cc
new file mode 100644
index 0000000..aab7b2e
--- /dev/null
+++ b/gpu/pgl/pgl_proc_address.cc
@@ -0,0 +1,315 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// This file contains the implementation of pglGetProcAddress
+
+#include <string.h>
+#include <GLES2/gl2.h>
+
+extern "C" {
+
+typedef void (*PGLFunctionPointer)(void);
+struct PGLFunctionInfo {
+ PGLFunctionPointer func;
+ char const * const name;
+};
+
+void (*pglGetProcAddress(char const * procname))() {
+ static const struct PGLFunctionInfo gl_functions[] = {
+ { (PGLFunctionPointer)(&glActiveTexture),
+ "glActiveTexture", },
+ { (PGLFunctionPointer)(&glAttachShader),
+ "glAttachShader", },
+ { (PGLFunctionPointer)(&glBindAttribLocation),
+ "glBindAttribLocation", },
+ { (PGLFunctionPointer)(&glBindBuffer),
+ "glBindBuffer", },
+ { (PGLFunctionPointer)(&glBindFramebuffer),
+ "glBindFramebuffer", },
+ { (PGLFunctionPointer)(&glBindRenderbuffer),
+ "glBindRenderbuffer", },
+ { (PGLFunctionPointer)(&glBindTexture),
+ "glBindTexture", },
+ { (PGLFunctionPointer)(&glBlendColor),
+ "glBlendColor", },
+ { (PGLFunctionPointer)(&glBlendEquation),
+ "glBlendEquation", },
+ { (PGLFunctionPointer)(&glBlendEquationSeparate),
+ "glBlendEquationSeparate", },
+ { (PGLFunctionPointer)(&glBlendFunc),
+ "glBlendFunc", },
+ { (PGLFunctionPointer)(&glBlendFuncSeparate),
+ "glBlendFuncSeparate", },
+ { (PGLFunctionPointer)(&glBufferData),
+ "glBufferData", },
+ { (PGLFunctionPointer)(&glBufferSubData),
+ "glBufferSubData", },
+ { (PGLFunctionPointer)(&glCheckFramebufferStatus),
+ "glCheckFramebufferStatus", },
+ { (PGLFunctionPointer)(&glClear),
+ "glClear", },
+ { (PGLFunctionPointer)(&glClearColor),
+ "glClearColor", },
+ { (PGLFunctionPointer)(&glClearDepthf),
+ "glClearDepthf", },
+ { (PGLFunctionPointer)(&glClearStencil),
+ "glClearStencil", },
+ { (PGLFunctionPointer)(&glColorMask),
+ "glColorMask", },
+ { (PGLFunctionPointer)(&glCompileShader),
+ "glCompileShader", },
+ { (PGLFunctionPointer)(&glCompressedTexImage2D),
+ "glCompressedTexImage2D", },
+ { (PGLFunctionPointer)(&glCompressedTexSubImage2D),
+ "glCompressedTexSubImage2D", },
+ { (PGLFunctionPointer)(&glCopyTexImage2D),
+ "glCopyTexImage2D", },
+ { (PGLFunctionPointer)(&glCopyTexSubImage2D),
+ "glCopyTexSubImage2D", },
+ { (PGLFunctionPointer)(&glCreateProgram),
+ "glCreateProgram", },
+ { (PGLFunctionPointer)(&glCreateShader),
+ "glCreateShader", },
+ { (PGLFunctionPointer)(&glCullFace),
+ "glCullFace", },
+ { (PGLFunctionPointer)(&glDeleteBuffers),
+ "glDeleteBuffers", },
+ { (PGLFunctionPointer)(&glDeleteFramebuffers),
+ "glDeleteFramebuffers", },
+ { (PGLFunctionPointer)(&glDeleteProgram),
+ "glDeleteProgram", },
+ { (PGLFunctionPointer)(&glDeleteRenderbuffers),
+ "glDeleteRenderbuffers", },
+ { (PGLFunctionPointer)(&glDeleteShader),
+ "glDeleteShader", },
+ { (PGLFunctionPointer)(&glDeleteTextures),
+ "glDeleteTextures", },
+ { (PGLFunctionPointer)(&glDepthFunc),
+ "glDepthFunc", },
+ { (PGLFunctionPointer)(&glDepthMask),
+ "glDepthMask", },
+ { (PGLFunctionPointer)(&glDepthRangef),
+ "glDepthRangef", },
+ { (PGLFunctionPointer)(&glDetachShader),
+ "glDetachShader", },
+ { (PGLFunctionPointer)(&glDisable),
+ "glDisable", },
+ { (PGLFunctionPointer)(&glDisableVertexAttribArray),
+ "glDisableVertexAttribArray", },
+ { (PGLFunctionPointer)(&glDrawArrays),
+ "glDrawArrays", },
+ { (PGLFunctionPointer)(&glDrawElements),
+ "glDrawElements", },
+ { (PGLFunctionPointer)(&glEnable),
+ "glEnable", },
+ { (PGLFunctionPointer)(&glEnableVertexAttribArray),
+ "glEnableVertexAttribArray", },
+ { (PGLFunctionPointer)(&glFinish),
+ "glFinish", },
+ { (PGLFunctionPointer)(&glFlush),
+ "glFlush", },
+ { (PGLFunctionPointer)(&glFramebufferRenderbuffer),
+ "glFramebufferRenderbuffer", },
+ { (PGLFunctionPointer)(&glFramebufferTexture2D),
+ "glFramebufferTexture2D", },
+ { (PGLFunctionPointer)(&glFrontFace),
+ "glFrontFace", },
+ { (PGLFunctionPointer)(&glGenBuffers),
+ "glGenBuffers", },
+ { (PGLFunctionPointer)(&glGenerateMipmap),
+ "glGenerateMipmap", },
+ { (PGLFunctionPointer)(&glGenFramebuffers),
+ "glGenFramebuffers", },
+ { (PGLFunctionPointer)(&glGenRenderbuffers),
+ "glGenRenderbuffers", },
+ { (PGLFunctionPointer)(&glGenTextures),
+ "glGenTextures", },
+ { (PGLFunctionPointer)(&glGetActiveAttrib),
+ "glGetActiveAttrib", },
+ { (PGLFunctionPointer)(&glGetActiveUniform),
+ "glGetActiveUniform", },
+ { (PGLFunctionPointer)(&glGetAttachedShaders),
+ "glGetAttachedShaders", },
+ { (PGLFunctionPointer)(&glGetAttribLocation),
+ "glGetAttribLocation", },
+ { (PGLFunctionPointer)(&glGetBooleanv),
+ "glGetBooleanv", },
+ { (PGLFunctionPointer)(&glGetBufferParameteriv),
+ "glGetBufferParameteriv", },
+ { (PGLFunctionPointer)(&glGetError),
+ "glGetError", },
+ { (PGLFunctionPointer)(&glGetFloatv),
+ "glGetFloatv", },
+ { (PGLFunctionPointer)(&glGetFramebufferAttachmentParameteriv),
+ "glGetFramebufferAttachmentParameteriv", },
+ { (PGLFunctionPointer)(&glGetIntegerv),
+ "glGetIntegerv", },
+ { (PGLFunctionPointer)(&glGetProgramiv),
+ "glGetProgramiv", },
+ { (PGLFunctionPointer)(&glGetProgramInfoLog),
+ "glGetProgramInfoLog", },
+ { (PGLFunctionPointer)(&glGetRenderbufferParameteriv),
+ "glGetRenderbufferParameteriv", },
+ { (PGLFunctionPointer)(&glGetShaderiv),
+ "glGetShaderiv", },
+ { (PGLFunctionPointer)(&glGetShaderInfoLog),
+ "glGetShaderInfoLog", },
+ { (PGLFunctionPointer)(&glGetShaderPrecisionFormat),
+ "glGetShaderPrecisionFormat", },
+ { (PGLFunctionPointer)(&glGetShaderSource),
+ "glGetShaderSource", },
+ { (PGLFunctionPointer)(&glGetString),
+ "glGetString", },
+ { (PGLFunctionPointer)(&glGetTexParameterfv),
+ "glGetTexParameterfv", },
+ { (PGLFunctionPointer)(&glGetTexParameteriv),
+ "glGetTexParameteriv", },
+ { (PGLFunctionPointer)(&glGetUniformfv),
+ "glGetUniformfv", },
+ { (PGLFunctionPointer)(&glGetUniformiv),
+ "glGetUniformiv", },
+ { (PGLFunctionPointer)(&glGetUniformLocation),
+ "glGetUniformLocation", },
+ { (PGLFunctionPointer)(&glGetVertexAttribfv),
+ "glGetVertexAttribfv", },
+ { (PGLFunctionPointer)(&glGetVertexAttribiv),
+ "glGetVertexAttribiv", },
+ { (PGLFunctionPointer)(&glGetVertexAttribPointerv),
+ "glGetVertexAttribPointerv", },
+ { (PGLFunctionPointer)(&glHint),
+ "glHint", },
+ { (PGLFunctionPointer)(&glIsBuffer),
+ "glIsBuffer", },
+ { (PGLFunctionPointer)(&glIsEnabled),
+ "glIsEnabled", },
+ { (PGLFunctionPointer)(&glIsFramebuffer),
+ "glIsFramebuffer", },
+ { (PGLFunctionPointer)(&glIsProgram),
+ "glIsProgram", },
+ { (PGLFunctionPointer)(&glIsRenderbuffer),
+ "glIsRenderbuffer", },
+ { (PGLFunctionPointer)(&glIsShader),
+ "glIsShader", },
+ { (PGLFunctionPointer)(&glIsTexture),
+ "glIsTexture", },
+ { (PGLFunctionPointer)(&glLineWidth),
+ "glLineWidth", },
+ { (PGLFunctionPointer)(&glLinkProgram),
+ "glLinkProgram", },
+ { (PGLFunctionPointer)(&glPixelStorei),
+ "glPixelStorei", },
+ { (PGLFunctionPointer)(&glPolygonOffset),
+ "glPolygonOffset", },
+ { (PGLFunctionPointer)(&glReadPixels),
+ "glReadPixels", },
+ { (PGLFunctionPointer)(&glReleaseShaderCompiler),
+ "glReleaseShaderCompiler", },
+ { (PGLFunctionPointer)(&glRenderbufferStorage),
+ "glRenderbufferStorage", },
+ { (PGLFunctionPointer)(&glSampleCoverage),
+ "glSampleCoverage", },
+ { (PGLFunctionPointer)(&glScissor),
+ "glScissor", },
+ { (PGLFunctionPointer)(&glShaderBinary),
+ "glShaderBinary", },
+ { (PGLFunctionPointer)(&glShaderSource),
+ "glShaderSource", },
+ { (PGLFunctionPointer)(&glStencilFunc),
+ "glStencilFunc", },
+ { (PGLFunctionPointer)(&glStencilFuncSeparate),
+ "glStencilFuncSeparate", },
+ { (PGLFunctionPointer)(&glStencilMask),
+ "glStencilMask", },
+ { (PGLFunctionPointer)(&glStencilMaskSeparate),
+ "glStencilMaskSeparate", },
+ { (PGLFunctionPointer)(&glStencilOp),
+ "glStencilOp", },
+ { (PGLFunctionPointer)(&glStencilOpSeparate),
+ "glStencilOpSeparate", },
+ { (PGLFunctionPointer)(&glTexImage2D),
+ "glTexImage2D", },
+ { (PGLFunctionPointer)(&glTexParameterf),
+ "glTexParameterf", },
+ { (PGLFunctionPointer)(&glTexParameterfv),
+ "glTexParameterfv", },
+ { (PGLFunctionPointer)(&glTexParameteri),
+ "glTexParameteri", },
+ { (PGLFunctionPointer)(&glTexParameteriv),
+ "glTexParameteriv", },
+ { (PGLFunctionPointer)(&glTexSubImage2D),
+ "glTexSubImage2D", },
+ { (PGLFunctionPointer)(&glUniform1f),
+ "glUniform1f", },
+ { (PGLFunctionPointer)(&glUniform1fv),
+ "glUniform1fv", },
+ { (PGLFunctionPointer)(&glUniform1i),
+ "glUniform1i", },
+ { (PGLFunctionPointer)(&glUniform1iv),
+ "glUniform1iv", },
+ { (PGLFunctionPointer)(&glUniform2f),
+ "glUniform2f", },
+ { (PGLFunctionPointer)(&glUniform2fv),
+ "glUniform2fv", },
+ { (PGLFunctionPointer)(&glUniform2i),
+ "glUniform2i", },
+ { (PGLFunctionPointer)(&glUniform2iv),
+ "glUniform2iv", },
+ { (PGLFunctionPointer)(&glUniform3f),
+ "glUniform3f", },
+ { (PGLFunctionPointer)(&glUniform3fv),
+ "glUniform3fv", },
+ { (PGLFunctionPointer)(&glUniform3i),
+ "glUniform3i", },
+ { (PGLFunctionPointer)(&glUniform3iv),
+ "glUniform3iv", },
+ { (PGLFunctionPointer)(&glUniform4f),
+ "glUniform4f", },
+ { (PGLFunctionPointer)(&glUniform4fv),
+ "glUniform4fv", },
+ { (PGLFunctionPointer)(&glUniform4i),
+ "glUniform4i", },
+ { (PGLFunctionPointer)(&glUniform4iv),
+ "glUniform4iv", },
+ { (PGLFunctionPointer)(&glUniformMatrix2fv),
+ "glUniformMatrix2fv", },
+ { (PGLFunctionPointer)(&glUniformMatrix3fv),
+ "glUniformMatrix3fv", },
+ { (PGLFunctionPointer)(&glUniformMatrix4fv),
+ "glUniformMatrix4fv", },
+ { (PGLFunctionPointer)(&glUseProgram),
+ "glUseProgram", },
+ { (PGLFunctionPointer)(&glValidateProgram),
+ "glValidateProgram", },
+ { (PGLFunctionPointer)(&glVertexAttrib1f),
+ "glVertexAttrib1f", },
+ { (PGLFunctionPointer)(&glVertexAttrib1fv),
+ "glVertexAttrib1fv", },
+ { (PGLFunctionPointer)(&glVertexAttrib2f),
+ "glVertexAttrib2f", },
+ { (PGLFunctionPointer)(&glVertexAttrib2fv),
+ "glVertexAttrib2fv", },
+ { (PGLFunctionPointer)(&glVertexAttrib3f),
+ "glVertexAttrib3f", },
+ { (PGLFunctionPointer)(&glVertexAttrib3fv),
+ "glVertexAttrib3fv", },
+ { (PGLFunctionPointer)(&glVertexAttrib4f),
+ "glVertexAttrib4f", },
+ { (PGLFunctionPointer)(&glVertexAttrib4fv),
+ "glVertexAttrib4fv", },
+ { (PGLFunctionPointer)(&glVertexAttribPointer),
+ "glVertexAttribPointer", },
+ { (PGLFunctionPointer)(&glViewport),
+ "glViewport", },
+ };
+
+ unsigned int num_functions = sizeof(gl_functions) / sizeof(gl_functions[0]);
+ for (unsigned int ii = 0; ii < num_functions; ++ii) {
+ if (strcmp(gl_functions[ii].name, procname) == 0) {
+ return gl_functions[ii].func;
+ }
+ }
+ return NULL;
+}
+} // extern "C"
+