summaryrefslogtreecommitdiff
path: root/src/mbgl/gl
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-11-04 16:23:16 +0100
committerKonstantin Käfer <mail@kkaefer.com>2016-11-04 21:24:05 +0100
commit29c5c13aa2860a0e8c1ac9a826b08330708d3f29 (patch)
treebac1808d9b184e87daa9b82586c7ce0bf75b025d /src/mbgl/gl
parentc90a55959980f9ef9678a45b9c9ded906d637b34 (diff)
downloadqtlocation-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.cpp43
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;
+ }
}
}
}