From f8c050b854c42043eea50562d6588f8d26590df1 Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Tue, 23 Jul 2019 17:38:34 +0300 Subject: [build] Move OpenGL related code to platform Mapbox GL abstracts OpenGL with the GFX layer and OpenGL is now optional. --- include/mbgl/gl/renderable_resource.hpp | 24 --- include/mbgl/gl/renderer_backend.hpp | 56 ------ include/mbgl/platform/gl_functions.hpp | 337 -------------------------------- 3 files changed, 417 deletions(-) delete mode 100644 include/mbgl/gl/renderable_resource.hpp delete mode 100644 include/mbgl/gl/renderer_backend.hpp delete mode 100644 include/mbgl/platform/gl_functions.hpp (limited to 'include') diff --git a/include/mbgl/gl/renderable_resource.hpp b/include/mbgl/gl/renderable_resource.hpp deleted file mode 100644 index 9585269270..0000000000 --- a/include/mbgl/gl/renderable_resource.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include - -#include - -namespace mbgl { -namespace gl { - -class RenderableResource : public gfx::RenderableResource { -protected: - explicit RenderableResource() = default; - -public: - virtual void bind() = 0; - - virtual void swap() { - // Renderable resources that require a swap function to be called explicitly - // can override this method. - } -}; - -} // namespace gl -} // namespace mbgl diff --git a/include/mbgl/gl/renderer_backend.hpp b/include/mbgl/gl/renderer_backend.hpp deleted file mode 100644 index cfa28ddaeb..0000000000 --- a/include/mbgl/gl/renderer_backend.hpp +++ /dev/null @@ -1,56 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -namespace mbgl { -namespace gl { - -class Context; -using ProcAddress = void (*)(); -using FramebufferID = uint32_t; - -class RendererBackend : public gfx::RendererBackend { -public: - RendererBackend(gfx::ContextMode); - ~RendererBackend() override; - - // Called prior to rendering to update the internally assumed OpenGL state. - virtual void updateAssumedState() = 0; - -protected: - std::unique_ptr createContext() override; - - // Called with the name of an OpenGL extension that should be loaded. RendererBackend implementations - // must call the API-specific version that obtains the function pointer for this function, - // or a null pointer if unsupported/unavailable. - virtual ProcAddress getExtensionFunctionPointer(const char*) = 0; - - // Reads the color pixel data from the currently bound framebuffer. - PremultipliedImage readFramebuffer(const Size&); - - // A constant to signal that a framebuffer is bound, but with an unknown ID. - static constexpr const FramebufferID ImplicitFramebufferBinding = - std::numeric_limits::max(); - - // Tells the renderer that OpenGL state has already been set by the windowing toolkit. - // It sets the internal assumed state to the supplied values. - void assumeFramebufferBinding(FramebufferID fbo); - void assumeViewport(int32_t x, int32_t y, const Size&); - void assumeScissorTest(bool); - - // Returns true when assumed framebuffer binding hasn't changed from the implicit binding. - bool implicitFramebufferBound(); - -public: - // Triggers an OpenGL state update if the internal assumed state doesn't match the - // supplied values. - void setFramebufferBinding(FramebufferID fbo); - void setViewport(int32_t x, int32_t y, const Size&); - void setScissorTest(bool); -}; - -} // namespace gl -} // namespace mbgl diff --git a/include/mbgl/platform/gl_functions.hpp b/include/mbgl/platform/gl_functions.hpp deleted file mode 100644 index fab3e3aa36..0000000000 --- a/include/mbgl/platform/gl_functions.hpp +++ /dev/null @@ -1,337 +0,0 @@ -#pragma once - -#include - -// 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(_WIN32) -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 -- cgit v1.2.1