diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-11-04 16:23:16 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-11-04 21:24:05 +0100 |
commit | 29c5c13aa2860a0e8c1ac9a826b08330708d3f29 (patch) | |
tree | bac1808d9b184e87daa9b82586c7ce0bf75b025d /src/mbgl/gl | |
parent | c90a55959980f9ef9678a45b9c9ded906d637b34 (diff) | |
download | qtlocation-mapboxgl-29c5c13aa2860a0e8c1ac9a826b08330708d3f29.tar.gz |
[core] move OpenGL debug information printing to core
Diffstat (limited to 'src/mbgl/gl')
-rw-r--r-- | src/mbgl/gl/extension.cpp | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/src/mbgl/gl/extension.cpp b/src/mbgl/gl/extension.cpp index ee94e8ecfd..40a2096f4f 100644 --- a/src/mbgl/gl/extension.cpp +++ b/src/mbgl/gl/extension.cpp @@ -1,9 +1,11 @@ #include <mbgl/gl/extension.hpp> #include <mbgl/gl/gl.hpp> +#include <mbgl/platform/log.hpp> #include <mutex> #include <string> #include <vector> +#include <cstring> namespace mbgl { namespace gl { @@ -24,20 +26,37 @@ ExtensionFunctionBase::ExtensionFunctionBase(std::initializer_list<Probe> probes static std::once_flag initializeExtensionsOnce; +const char* getGLString(GLenum name) { + return reinterpret_cast<const char*>(MBGL_CHECK_ERROR(glGetString(name))); +} + void InitializeExtensions(glProc (*getProcAddress)(const char*)) { std::call_once(initializeExtensionsOnce, [getProcAddress] { - const char* extensionsPtr = - reinterpret_cast<const char*>(MBGL_CHECK_ERROR(glGetString(GL_EXTENSIONS))); - - if (!extensionsPtr) - return; - - const std::string extensions = extensionsPtr; - for (auto fn : detail::extensionFunctions()) { - for (auto probe : fn.second) { - if (extensions.find(probe.first) != std::string::npos) { - *fn.first = getProcAddress(probe.second); - break; +#ifndef NDEBUG + if (const char* vendor = getGLString(GL_VENDOR)) { + mbgl::Log::Info(mbgl::Event::OpenGL, "Vendor: %s", vendor); + } + if (const char* renderer = getGLString(GL_RENDERER)) { + mbgl::Log::Info(mbgl::Event::OpenGL, "Renderer: %s", renderer); + } + if (const char* version = getGLString(GL_VERSION)) { + mbgl::Log::Info(mbgl::Event::OpenGL, "Version: %s", version); + } + if (const char* shaderVersion = getGLString(GL_SHADING_LANGUAGE_VERSION)) { + mbgl::Log::Info(mbgl::Event::OpenGL, "Shading Language Version: %s", shaderVersion); + } +#endif + + if (const char* extensions = getGLString(GL_EXTENSIONS)) { +#ifndef NDEBUG + mbgl::Log::Info(mbgl::Event::OpenGL, "Extensions: %s", extensions); +#endif + for (auto fn : detail::extensionFunctions()) { + for (auto probe : fn.second) { + if (strstr(extensions, probe.first) != nullptr) { + *fn.first = getProcAddress(probe.second); + break; + } } } } |