summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mbgl/platform/gl_functions.hpp337
-rw-r--r--src/mbgl/gl/defines.hpp175
-rw-r--r--src/mbgl/platform/gl_functions.cpp17
3 files changed, 529 insertions, 0 deletions
diff --git a/include/mbgl/platform/gl_functions.hpp b/include/mbgl/platform/gl_functions.hpp
new file mode 100644
index 0000000000..a007a48b88
--- /dev/null
+++ b/include/mbgl/platform/gl_functions.hpp
@@ -0,0 +1,337 @@
+#pragma once
+
+#include <cstddef>
+
+// Pointers to OpenGL ES 2.0 functions. They must be
+// initialized by the platform at linking time.
+
+#ifndef NDEBUG
+#define MBGL_CHECK_ERROR(cmd) ([&]() { struct __MBGL_CHECK_ERROR { ~__MBGL_CHECK_ERROR() noexcept(false) { mbgl::platform::glCheckError(#cmd, __FILE__, __LINE__); } } __MBGL_CHECK_ERROR; return cmd; }())
+#else
+#define MBGL_CHECK_ERROR(cmd) (cmd)
+#endif
+
+namespace mbgl {
+namespace platform {
+
+using GLbitfield = unsigned int;
+using GLboolean = unsigned char;
+using GLchar = char;
+using GLdouble = double;
+using GLenum = unsigned int;
+using GLfloat = float;
+using GLint = int;
+using GLsizei = int;
+using GLubyte = unsigned char;
+using GLuint = unsigned int;
+using GLvoid = void;
+
+#if defined(_WINDOWS)
+using GLintptr = long long;
+using GLsizeiptr = long long;
+#else
+using GLintptr = long;
+using GLsizeiptr = long;
+#endif
+
+/// Pointer to glActiveTexture OpenGL function.
+extern void (* const glActiveTexture)(GLenum);
+/// Pointer to glAttachShader OpenGL function.
+extern void (* const glAttachShader)(GLuint, GLuint);
+/// Pointer to glBindAttribLocation OpenGL function.
+extern void (* const glBindAttribLocation)(GLuint, GLuint, const GLchar *);
+/// Pointer to glBindBuffer OpenGL function.
+extern void (* const glBindBuffer)(GLenum, GLuint);
+/// Pointer to glBindFramebuffer OpenGL function.
+extern void (* const glBindFramebuffer)(GLenum, GLuint);
+/// Pointer to glBindRenderbuffer OpenGL function.
+extern void (* const glBindRenderbuffer)(GLenum, GLuint);
+/// Pointer to glBindTexture OpenGL function.
+extern void (* const glBindTexture)(GLenum, GLuint);
+/// Pointer to glBlendColor OpenGL function.
+extern void (* const glBlendColor)(GLfloat, GLfloat, GLfloat, GLfloat);
+/// Pointer to glBlendEquation OpenGL function.
+extern void (* const glBlendEquation)(GLenum);
+/// Pointer to glBlendEquationSeparate OpenGL function.
+extern void (* const glBlendEquationSeparate)(GLenum, GLenum);
+/// Pointer to glBlendFunc OpenGL function.
+extern void (* const glBlendFunc)(GLenum, GLenum);
+/// Pointer to glBlendFuncSeparate OpenGL function.
+extern void (* const glBlendFuncSeparate)(GLenum, GLenum, GLenum, GLenum);
+/// Pointer to glBufferData OpenGL function.
+extern void (* const glBufferData)(GLenum, GLsizeiptr, const void *, GLenum);
+/// Pointer to glBufferSubData OpenGL function.
+extern void (* const glBufferSubData)(GLenum, GLintptr, GLsizeiptr, const void *);
+/// Pointer to glCheckFramebufferStatus OpenGL function.
+extern GLenum (* const glCheckFramebufferStatus)(GLenum);
+/// Pointer to glClear OpenGL function.
+extern void (* const glClear)(GLbitfield);
+/// Pointer to glClearColor OpenGL function.
+extern void (* const glClearColor)(GLfloat, GLfloat, GLfloat, GLfloat);
+/// Pointer to glClearDepthf OpenGL function.
+extern void (* const glClearDepthf)(GLfloat);
+/// Pointer to glClearStencil OpenGL function.
+extern void (* const glClearStencil)(GLint);
+/// Pointer to glColorMask OpenGL function.
+extern void (* const glColorMask)(GLboolean, GLboolean, GLboolean, GLboolean);
+/// Pointer to glCompileShader OpenGL function.
+extern void (* const glCompileShader)(GLuint);
+/// Pointer to glCompressedTexImage2D OpenGL function.
+extern void (* const glCompressedTexImage2D)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *);
+/// Pointer to glCompressedTexSubImage2D OpenGL function.
+extern void (* const glCompressedTexSubImage2D)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *);
+/// Pointer to glCopyTexImage2D OpenGL function.
+extern void (* const glCopyTexImage2D)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
+/// Pointer to glCopyTexSubImage2D OpenGL function.
+extern void (* const glCopyTexSubImage2D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+/// Pointer to glCreateProgram OpenGL function.
+extern GLuint (* const glCreateProgram)();
+/// Pointer to glCreateShader OpenGL function.
+extern GLuint (* const glCreateShader)(GLenum);
+/// Pointer to glCullFace OpenGL function.
+extern void (* const glCullFace)(GLenum);
+/// Pointer to glDeleteBuffers OpenGL function.
+extern void (* const glDeleteBuffers)(GLsizei, const GLuint *);
+/// Pointer to glDeleteFramebuffers OpenGL function.
+extern void (* const glDeleteFramebuffers)(GLsizei, const GLuint *);
+/// Pointer to glDeleteProgram OpenGL function.
+extern void (* const glDeleteProgram)(GLuint);
+/// Pointer to glDeleteRenderbuffers OpenGL function.
+extern void (* const glDeleteRenderbuffers)(GLsizei, const GLuint *);
+/// Pointer to glDeleteShader OpenGL function.
+extern void (* const glDeleteShader)(GLuint);
+/// Pointer to glDeleteTextures OpenGL function.
+extern void (* const glDeleteTextures)(GLsizei, const GLuint *);
+/// Pointer to glDepthFunc OpenGL function.
+extern void (* const glDepthFunc)(GLenum);
+/// Pointer to glDepthMask OpenGL function.
+extern void (* const glDepthMask)(GLboolean);
+/// Pointer to glDepthRangef OpenGL function.
+extern void (* const glDepthRangef)(GLfloat, GLfloat);
+/// Pointer to glDetachShader OpenGL function.
+extern void (* const glDetachShader)(GLuint, GLuint);
+/// Pointer to glDisable OpenGL function.
+extern void (* const glDisable)(GLenum);
+/// Pointer to glDisableVertexAttribArray OpenGL function.
+extern void (* const glDisableVertexAttribArray)(GLuint);
+/// Pointer to glDrawArrays OpenGL function.
+extern void (* const glDrawArrays)(GLenum, GLint, GLsizei);
+/// Pointer to glDrawElements OpenGL function.
+extern void (* const glDrawElements)(GLenum, GLsizei, GLenum, const void *);
+/// Pointer to glEnable OpenGL function.
+extern void (* const glEnable)(GLenum);
+/// Pointer to glEnableVertexAttribArray OpenGL function.
+extern void (* const glEnableVertexAttribArray)(GLuint);
+/// Pointer to glFinish OpenGL function.
+extern void (* const glFinish)();
+/// Pointer to glFlush OpenGL function.
+extern void (* const glFlush)();
+/// Pointer to glFramebufferRenderbuffer OpenGL function.
+extern void (* const glFramebufferRenderbuffer)(GLenum, GLenum, GLenum, GLuint);
+/// Pointer to glFramebufferTexture2D OpenGL function.
+extern void (* const glFramebufferTexture2D)(GLenum, GLenum, GLenum, GLuint, GLint);
+/// Pointer to glFrontFace OpenGL function.
+extern void (* const glFrontFace)(GLenum);
+/// Pointer to glGenBuffers OpenGL function.
+extern void (* const glGenBuffers)(GLsizei, GLuint *);
+/// Pointer to glGenerateMipmap OpenGL function.
+extern void (* const glGenerateMipmap)(GLenum);
+/// Pointer to glGenFramebuffers OpenGL function.
+extern void (* const glGenFramebuffers)(GLsizei, GLuint *);
+/// Pointer to glGenRenderbuffers OpenGL function.
+extern void (* const glGenRenderbuffers)(GLsizei, GLuint *);
+/// Pointer to glGenTextures OpenGL function.
+extern void (* const glGenTextures)(GLsizei, GLuint *);
+/// Pointer to glGetActiveAttrib OpenGL function.
+extern void (* const glGetActiveAttrib)(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
+/// Pointer to glGetActiveUniform OpenGL function.
+extern void (* const glGetActiveUniform)(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
+/// Pointer to glGetAttachedShaders OpenGL function.
+extern void (* const glGetAttachedShaders)(GLuint, GLsizei, GLsizei *, GLuint *);
+/// Pointer to glGetAttribLocation OpenGL function.
+extern GLint (* const glGetAttribLocation)(GLuint, const GLchar *);
+/// Pointer to glGetBooleanv OpenGL function.
+extern void (* const glGetBooleanv)(GLenum, GLboolean *);
+/// Pointer to glGetBufferParameteriv OpenGL function.
+extern void (* const glGetBufferParameteriv)(GLenum, GLenum, GLint *);
+/// Pointer to glGetError OpenGL function.
+extern GLenum (* const glGetError)();
+/// Pointer to glGetFloatv OpenGL function.
+extern void (* const glGetFloatv)(GLenum, GLfloat *);
+/// Pointer to glGetFramebufferAttachmentParameteriv OpenGL function.
+extern void (* const glGetFramebufferAttachmentParameteriv)(GLenum, GLenum, GLenum, GLint *);
+/// Pointer to glGetIntegerv OpenGL function.
+extern void (* const glGetIntegerv)(GLenum, GLint *);
+/// Pointer to glGetProgramInfoLog OpenGL function.
+extern void (* const glGetProgramInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *);
+/// Pointer to glGetProgramiv OpenGL function.
+extern void (* const glGetProgramiv)(GLuint, GLenum, GLint *);
+/// Pointer to glGetRenderbufferParameteriv OpenGL function.
+extern void (* const glGetRenderbufferParameteriv)(GLenum, GLenum, GLint *);
+/// Pointer to glGetShaderInfoLog OpenGL function.
+extern void (* const glGetShaderInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *);
+/// Pointer to glGetShaderiv OpenGL function.
+extern void (* const glGetShaderiv)(GLuint, GLenum, GLint *);
+/// Pointer to glGetShaderSource OpenGL function.
+extern void (* const glGetShaderSource)(GLuint, GLsizei, GLsizei *, GLchar *);
+/// Pointer to glGetString OpenGL function.
+extern const GLubyte *(*glGetString)(GLenum);
+/// Pointer to glGetTexParameterfv OpenGL function.
+extern void (* const glGetTexParameterfv)(GLenum, GLenum, GLfloat *);
+/// Pointer to glGetTexParameteriv OpenGL function.
+extern void (* const glGetTexParameteriv)(GLenum, GLenum, GLint *);
+/// Pointer to glGetUniformfv OpenGL function.
+extern void (* const glGetUniformfv)(GLuint, GLint, GLfloat *);
+/// Pointer to glGetUniformiv OpenGL function.
+extern void (* const glGetUniformiv)(GLuint, GLint, GLint *);
+/// Pointer to glGetUniformLocation OpenGL function.
+extern GLint (* const glGetUniformLocation)(GLuint, const GLchar *);
+/// Pointer to glGetVertexAttribfv OpenGL function.
+extern void (* const glGetVertexAttribfv)(GLuint, GLenum, GLfloat *);
+/// Pointer to glGetVertexAttribiv OpenGL function.
+extern void (* const glGetVertexAttribiv)(GLuint, GLenum, GLint *);
+/// Pointer to glGetVertexAttribPointerv OpenGL function.
+extern void (* const glGetVertexAttribPointerv)(GLuint, GLenum, void **);
+/// Pointer to glHint OpenGL function.
+extern void (* const glHint)(GLenum, GLenum);
+/// Pointer to glIsBuffer OpenGL function.
+extern GLboolean (* const glIsBuffer)(GLuint);
+/// Pointer to glIsEnabled OpenGL function.
+extern GLboolean (* const glIsEnabled)(GLenum);
+/// Pointer to glIsFramebuffer OpenGL function.
+extern GLboolean (* const glIsFramebuffer)(GLuint);
+/// Pointer to glIsProgram OpenGL function.
+extern GLboolean (* const glIsProgram)(GLuint);
+/// Pointer to glIsRenderbuffer OpenGL function.
+extern GLboolean (* const glIsRenderbuffer)(GLuint);
+/// Pointer to glIsShader OpenGL function.
+extern GLboolean (* const glIsShader)(GLuint);
+/// Pointer to glIsTexture OpenGL function.
+extern GLboolean (* const glIsTexture)(GLuint);
+/// Pointer to glLineWidth OpenGL function.
+extern void (* const glLineWidth)(GLfloat);
+/// Pointer to glLinkProgram OpenGL function.
+extern void (* const glLinkProgram)(GLuint);
+/// Pointer to glPixelStorei OpenGL function.
+extern void (* const glPixelStorei)(GLenum, GLint);
+/// Pointer to glPolygonOffset OpenGL function.
+extern void (* const glPolygonOffset)(GLfloat, GLfloat);
+/// Pointer to glReadPixels OpenGL function.
+extern void (* const glReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *);
+/// Pointer to glRenderbufferStorage OpenGL function.
+extern void (* const glRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei);
+/// Pointer to glSampleCoverage OpenGL function.
+extern void (* const glSampleCoverage)(GLfloat, GLboolean);
+/// Pointer to glScissor OpenGL function.
+extern void (* const glScissor)(GLint, GLint, GLsizei, GLsizei);
+/// Pointer to glShaderSource OpenGL function.
+extern void (* const glShaderSource)(GLuint, GLsizei, const GLchar * const*, const GLint *);
+/// Pointer to glStencilFunc OpenGL function.
+extern void (* const glStencilFunc)(GLenum, GLint, GLuint);
+/// Pointer to glStencilFuncSeparate OpenGL function.
+extern void (* const glStencilFuncSeparate)(GLenum, GLenum, GLint, GLuint);
+/// Pointer to glStencilMask OpenGL function.
+extern void (* const glStencilMask)(GLuint);
+/// Pointer to glStencilMaskSeparate OpenGL function.
+extern void (* const glStencilMaskSeparate)(GLenum, GLuint);
+/// Pointer to glStencilOp OpenGL function.
+extern void (* const glStencilOp)(GLenum, GLenum, GLenum);
+/// Pointer to glStencilOpSeparate OpenGL function.
+extern void (* const glStencilOpSeparate)(GLenum, GLenum, GLenum, GLenum);
+/// Pointer to glTexImage2D OpenGL function.
+extern void (* const glTexImage2D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *);
+/// Pointer to glTexParameterf OpenGL function.
+extern void (* const glTexParameterf)(GLenum, GLenum, GLfloat);
+/// Pointer to glTexParameterfv OpenGL function.
+extern void (* const glTexParameterfv)(GLenum, GLenum, const GLfloat *);
+/// Pointer to glTexParameteri OpenGL function.
+extern void (* const glTexParameteri)(GLenum, GLenum, GLint);
+/// Pointer to glTexParameteriv OpenGL function.
+extern void (* const glTexParameteriv)(GLenum, GLenum, const GLint *);
+/// Pointer to glTexSubImage2D OpenGL function.
+extern void (* const glTexSubImage2D)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *);
+/// Pointer to glUniform1f OpenGL function.
+extern void (* const glUniform1f)(GLint, GLfloat);
+/// Pointer to glUniform1fv OpenGL function.
+extern void (* const glUniform1fv)(GLint, GLsizei, const GLfloat *);
+/// Pointer to glUniform1i OpenGL function.
+extern void (* const glUniform1i)(GLint, GLint);
+/// Pointer to glUniform1iv OpenGL function.
+extern void (* const glUniform1iv)(GLint, GLsizei, const GLint *);
+/// Pointer to glUniform2f OpenGL function.
+extern void (* const glUniform2f)(GLint, GLfloat, GLfloat);
+/// Pointer to glUniform2fv OpenGL function.
+extern void (* const glUniform2fv)(GLint, GLsizei, const GLfloat *);
+/// Pointer to glUniform2i OpenGL function.
+extern void (* const glUniform2i)(GLint, GLint, GLint);
+/// Pointer to glUniform2iv OpenGL function.
+extern void (* const glUniform2iv)(GLint, GLsizei, const GLint *);
+/// Pointer to glUniform3f OpenGL function.
+extern void (* const glUniform3f)(GLint, GLfloat, GLfloat, GLfloat);
+/// Pointer to glUniform3fv OpenGL function.
+extern void (* const glUniform3fv)(GLint, GLsizei, const GLfloat *);
+/// Pointer to glUniform3i OpenGL function.
+extern void (* const glUniform3i)(GLint, GLint, GLint, GLint);
+/// Pointer to glUniform3iv OpenGL function.
+extern void (* const glUniform3iv)(GLint, GLsizei, const GLint *);
+/// Pointer to glUniform4f OpenGL function.
+extern void (* const glUniform4f)(GLint, GLfloat, GLfloat, GLfloat, GLfloat);
+/// Pointer to glUniform4fv OpenGL function.
+extern void (* const glUniform4fv)(GLint, GLsizei, const GLfloat *);
+/// Pointer to glUniform4i OpenGL function.
+extern void (* const glUniform4i)(GLint, GLint, GLint, GLint, GLint);
+/// Pointer to glUniform4iv OpenGL function.
+extern void (* const glUniform4iv)(GLint, GLsizei, const GLint *);
+/// Pointer to glUniformMatrix2fv OpenGL function.
+extern void (* const glUniformMatrix2fv)(GLint, GLsizei, GLboolean, const GLfloat *);
+/// Pointer to glUniformMatrix3fv OpenGL function.
+extern void (* const glUniformMatrix3fv)(GLint, GLsizei, GLboolean, const GLfloat *);
+/// Pointer to glUniformMatrix4fv OpenGL function.
+extern void (* const glUniformMatrix4fv)(GLint, GLsizei, GLboolean, const GLfloat *);
+/// Pointer to glUseProgram OpenGL function.
+extern void (* const glUseProgram)(GLuint);
+/// Pointer to glValidateProgram OpenGL function.
+extern void (* const glValidateProgram)(GLuint);
+/// Pointer to glVertexAttrib1f OpenGL function.
+extern void (* const glVertexAttrib1f)(GLuint, GLfloat);
+/// Pointer to glVertexAttrib1fv OpenGL function.
+extern void (* const glVertexAttrib1fv)(GLuint, const GLfloat *);
+/// Pointer to glVertexAttrib2f OpenGL function.
+extern void (* const glVertexAttrib2f)(GLuint, GLfloat, GLfloat);
+/// Pointer to glVertexAttrib2fv OpenGL function.
+extern void (* const glVertexAttrib2fv)(GLuint, const GLfloat *);
+/// Pointer to glVertexAttrib3f OpenGL function.
+extern void (* const glVertexAttrib3f)(GLuint, GLfloat, GLfloat, GLfloat);
+/// Pointer to glVertexAttrib3fv OpenGL function.
+extern void (* const glVertexAttrib3fv)(GLuint, const GLfloat *);
+/// Pointer to glVertexAttrib4f OpenGL function.
+extern void (* const glVertexAttrib4f)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+/// Pointer to glVertexAttrib4fv OpenGL function.
+extern void (* const glVertexAttrib4fv)(GLuint, const GLfloat *);
+/// Pointer to glVertexAttribPointer OpenGL function.
+extern void (* const glVertexAttribPointer)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *);
+/// Pointer to glViewport OpenGL function.
+extern void (* const glViewport)(GLint, GLint, GLsizei, GLsizei);
+
+#ifndef MBGL_USE_GLES2
+/// Pointer to glDrawPixels OpenGL function.
+extern void (* const glDrawPixels)(GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+/// Pointer to glGetDoublev OpenGL function.
+extern void (* const glGetDoublev)(GLenum, GLdouble *);
+/// Pointer to glPixelTransferf OpenGL function.
+extern void (* const glPixelTransferf)(GLenum, GLfloat);
+/// Pointer to glPixelZoom OpenGL function.
+extern void (* const glPixelZoom)(GLfloat, GLfloat);
+/// Pointer to glPointSize OpenGL function.
+extern void (* const glPointSize)(GLfloat);
+/// Pointer to glRasterPos4d OpenGL function.
+extern void (* const glRasterPos4d)(GLdouble, GLdouble, GLdouble, GLdouble);
+#endif
+
+#ifndef NDEBUG
+/// Check for GL errors and print on the console.
+void glCheckError(const char *cmd, const char *file, int line);
+#endif
+
+} // namespace platform
+} // namespace mbgl \ No newline at end of file
diff --git a/src/mbgl/gl/defines.hpp b/src/mbgl/gl/defines.hpp
new file mode 100644
index 0000000000..41c4cb07d6
--- /dev/null
+++ b/src/mbgl/gl/defines.hpp
@@ -0,0 +1,175 @@
+#pragma once
+
+#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
+#define GL_ACTIVE_ATTRIBUTES 0x8B89
+#define GL_ACTIVE_TEXTURE 0x84E0
+#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
+#define GL_ACTIVE_UNIFORMS 0x8B86
+#define GL_ALPHA 0x1906
+#define GL_ALWAYS 0x0207
+#define GL_ARRAY_BUFFER 0x8892
+#define GL_ARRAY_BUFFER_BINDING 0x8894
+#define GL_BACK 0x0405
+#define GL_BLEND 0x0BE2
+#define GL_BLEND_COLOR 0x8005
+#define GL_BLEND_DST_ALPHA 0x80CA
+#define GL_BLEND_EQUATION_RGB 0x8009
+#define GL_BLEND_SRC_ALPHA 0x80CB
+#define GL_BOOL 0x8B56
+#define GL_BOOL_VEC2 0x8B57
+#define GL_BOOL_VEC3 0x8B58
+#define GL_BOOL_VEC4 0x8B59
+#define GL_BYTE 0x1400
+#define GL_CCW 0x0901
+#define GL_CLAMP_TO_EDGE 0x812F
+#define GL_COLOR_ATTACHMENT0 0x8CE0
+#define GL_COLOR_BUFFER_BIT 0x00004000
+#define GL_COLOR_CLEAR_VALUE 0x0C22
+#define GL_COLOR_WRITEMASK 0x0C23
+#define GL_COMPILE_STATUS 0x8B81
+#define GL_CONSTANT_ALPHA 0x8003
+#define GL_CONSTANT_COLOR 0x8001
+#define GL_CULL_FACE 0x0B44
+#define GL_CULL_FACE_MODE 0x0B45
+#define GL_CURRENT_PROGRAM 0x8B8D
+#define GL_CW 0x0900
+#define GL_DECR 0x1E03
+#define GL_DECR_WRAP 0x8508
+#define GL_DEPTH24_STENCIL8_OES 0x88F0
+#define GL_DEPTH_ATTACHMENT 0x8D00
+#define GL_DEPTH_BUFFER_BIT 0x00000100
+#define GL_DEPTH_CLEAR_VALUE 0x0B73
+#define GL_DEPTH_COMPONENT16 0x81A5
+#define GL_DEPTH_FUNC 0x0B74
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_DEPTH_TEST 0x0B71
+#define GL_DEPTH_WRITEMASK 0x0B72
+#define GL_DONT_CARE 0x1100
+#define GL_DST_ALPHA 0x0304
+#define GL_DST_COLOR 0x0306
+#define GL_DYNAMIC_DRAW 0x88E8
+#define GL_ELEMENT_ARRAY_BUFFER 0x8893
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
+#define GL_EQUAL 0x0202
+#define GL_EXTENSIONS 0x1F03
+#define GL_FALSE 0
+#define GL_FLOAT 0x1406
+#define GL_FLOAT_MAT2 0x8B5A
+#define GL_FLOAT_MAT3 0x8B5B
+#define GL_FLOAT_MAT4 0x8B5C
+#define GL_FLOAT_VEC2 0x8B50
+#define GL_FLOAT_VEC3 0x8B51
+#define GL_FLOAT_VEC4 0x8B52
+#define GL_FRAGMENT_SHADER 0x8B30
+#define GL_FRAMEBUFFER 0x8D40
+#define GL_FRAMEBUFFER_BINDING 0x8CA6
+#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
+#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
+#define GL_FRONT 0x0404
+#define GL_FRONT_AND_BACK 0x0408
+#define GL_FRONT_FACE 0x0B46
+#define GL_FUNC_ADD 0x8006
+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
+#define GL_FUNC_SUBTRACT 0x800A
+#define GL_GEQUAL 0x0206
+#define GL_GREATER 0x0204
+#define GL_INCR 0x1E02
+#define GL_INCR_WRAP 0x8507
+#define GL_INFO_LOG_LENGTH 0x8B84
+#define GL_INT 0x1404
+#define GL_INT_VEC2 0x8B53
+#define GL_INT_VEC3 0x8B54
+#define GL_INT_VEC4 0x8B55
+#define GL_INVALID_ENUM 0x0500
+#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
+#define GL_INVALID_OPERATION 0x0502
+#define GL_INVALID_VALUE 0x0501
+#define GL_INVERT 0x150A
+#define GL_KEEP 0x1E00
+#define GL_LEQUAL 0x0203
+#define GL_LESS 0x0201
+#define GL_LINEAR 0x2601
+#define GL_LINEAR_MIPMAP_NEAREST 0x2701
+#define GL_LINE_LOOP 0x0002
+#define GL_LINES 0x0001
+#define GL_LINE_STRIP 0x0003
+#define GL_LINE_WIDTH 0x0B21
+#define GL_LINK_STATUS 0x8B82
+#define GL_MAX_VERTEX_ATTRIBS 0x8869
+#define GL_NEAREST 0x2600
+#define GL_NEAREST_MIPMAP_NEAREST 0x2700
+#define GL_NEVER 0x0200
+#define GL_NO_ERROR 0
+#define GL_NOTEQUAL 0x0205
+#define GL_ONE 1
+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+#define GL_ONE_MINUS_DST_ALPHA 0x0305
+#define GL_ONE_MINUS_DST_COLOR 0x0307
+#define GL_ONE_MINUS_SRC_ALPHA 0x0303
+#define GL_ONE_MINUS_SRC_COLOR 0x0301
+#define GL_OUT_OF_MEMORY 0x0505
+#define GL_PACK_ALIGNMENT 0x0D05
+#define GL_POINTS 0x0000
+#define GL_RENDERBUFFER 0x8D41
+#define GL_RENDERBUFFER_BINDING 0x8CA7
+#define GL_RENDERER 0x1F01
+#define GL_REPEAT 0x2901
+#define GL_REPLACE 0x1E01
+#define GL_RGBA 0x1908
+#define GL_RGBA8_OES 0x8058
+#define GL_SAMPLER_2D 0x8B5E
+#define GL_SAMPLER_CUBE 0x8B60
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_SHORT 0x1402
+#define GL_SRC_ALPHA 0x0302
+#define GL_SRC_ALPHA_SATURATE 0x0308
+#define GL_SRC_COLOR 0x0300
+#define GL_STATIC_DRAW 0x88E4
+#define GL_STENCIL_ATTACHMENT 0x8D20
+#define GL_STENCIL_BUFFER_BIT 0x00000400
+#define GL_STENCIL_CLEAR_VALUE 0x0B91
+#define GL_STENCIL_FAIL 0x0B94
+#define GL_STENCIL_FUNC 0x0B92
+#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
+#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
+#define GL_STENCIL_REF 0x0B97
+#define GL_STENCIL_TEST 0x0B90
+#define GL_STENCIL_VALUE_MASK 0x0B93
+#define GL_STENCIL_WRITEMASK 0x0B98
+#define GL_STREAM_DRAW 0x88E0
+#define GL_TEXTURE0 0x84C0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_TEXTURE_BINDING_2D 0x8069
+#define GL_TEXTURE_MAG_FILTER 0x2800
+#define GL_TEXTURE_MIN_FILTER 0x2801
+#define GL_TEXTURE_WRAP_S 0x2802
+#define GL_TEXTURE_WRAP_T 0x2803
+#define GL_TRIANGLE_FAN 0x0006
+#define GL_TRIANGLES 0x0004
+#define GL_TRIANGLE_STRIP 0x0005
+#define GL_TRUE 1
+#define GL_UNPACK_ALIGNMENT 0x0CF5
+#define GL_UNSIGNED_BYTE 0x1401
+#define GL_UNSIGNED_INT 0x1405
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_VERTEX_SHADER 0x8B31
+#define GL_VIEWPORT 0x0BA2
+#define GL_ZERO 0
+
+#ifndef MBGL_USE_GLES2
+#define GL_CURRENT_RASTER_POSITION 0x0B07
+#define GL_DEPTH24_STENCIL8 0x88F0
+#define GL_DEPTH_BIAS 0x0D1F
+#define GL_DEPTH_COMPONENT 0x1902
+#define GL_DEPTH_SCALE 0x0D1E
+#define GL_INDEX_OFFSET 0x0D13
+#define GL_INDEX_SHIFT 0x0D12
+#define GL_LUMINANCE 0x1909
+#define GL_POINT_SIZE 0x0B11
+#define GL_RGBA8 0x8058
+#define GL_ZOOM_X 0x0D16
+#define GL_ZOOM_Y 0x0D17
+#endif \ No newline at end of file
diff --git a/src/mbgl/platform/gl_functions.cpp b/src/mbgl/platform/gl_functions.cpp
new file mode 100644
index 0000000000..6eb7790ca2
--- /dev/null
+++ b/src/mbgl/platform/gl_functions.cpp
@@ -0,0 +1,17 @@
+#include <mbgl/platform/gl_functions.hpp>
+
+#include <mbgl/util/logging.hpp>
+
+namespace mbgl {
+namespace platform {
+
+#ifndef NDEBUG
+void glCheckError(const char* cmd, const char* file, int line) {
+ if (GLenum err = glGetError()) {
+ Log::Warning(Event::OpenGL, "Error %d: %s - %s:%d", err, cmd, file, line);
+ }
+}
+#endif
+
+} // namespace platform
+} // namespace mbgl