diff options
author | Anand Thakker <github@anandthakker.net> | 2017-04-07 12:14:23 -0400 |
---|---|---|
committer | Anand Thakker <github@anandthakker.net> | 2017-04-07 12:14:23 -0400 |
commit | 3176f050c04ab72868c39ce1fb34f4acbf3f7aa1 (patch) | |
tree | b27bc49a2f1232483817b977f2c1b2f00471572b | |
parent | 6c3c4211197d79fd7671c2ada09b1f4498e9d37c (diff) | |
download | qtlocation-mapboxgl-upstream/log-precision.tar.gz |
Log out shader variable precisionupstream/log-precision
Closes #8533
-rw-r--r-- | src/mbgl/gl/context.cpp | 22 | ||||
-rw-r--r-- | src/mbgl/gl/context.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/renderer/painter.cpp | 2 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/mbgl/gl/context.cpp b/src/mbgl/gl/context.cpp index 565fe33771..58af38042e 100644 --- a/src/mbgl/gl/context.cpp +++ b/src/mbgl/gl/context.cpp @@ -90,6 +90,28 @@ void Context::enableDebugging() { MBGL_CHECK_ERROR(debugging->debugMessageCallback(extension::Debugging::DebugCallback, nullptr)); } +void Context::logGLDiagnostics() { +#ifdef GL_HIGH_FLOAT + int precision; + int range[2]; + MBGL_CHECK_ERROR(glGetShaderPrecisionFormat(GL_VERTEX_SHADER, GL_LOW_FLOAT, range, &precision)); + mbgl::Log::Info(mbgl::Event::General, "vertex shader / lowp float, precision: %i, range: [%i, %i]", precision, range[0], range[1]); + MBGL_CHECK_ERROR(glGetShaderPrecisionFormat(GL_VERTEX_SHADER, GL_MEDIUM_FLOAT, range, &precision)); + mbgl::Log::Info(mbgl::Event::General, "vertex shader / mediump float, precision: %i, range: [%i, %i]", precision, range[0], range[1]); + MBGL_CHECK_ERROR(glGetShaderPrecisionFormat(GL_VERTEX_SHADER, GL_HIGH_FLOAT, range, &precision)); + mbgl::Log::Info(mbgl::Event::General, "vertex shader / highp float, precision: %i, range: [%i, %i]", precision, range[0], range[1]); + + MBGL_CHECK_ERROR(glGetShaderPrecisionFormat(GL_FRAGMENT_SHADER, GL_LOW_FLOAT, range, &precision)); + mbgl::Log::Info(mbgl::Event::General, "fragment shader / lowp float, precision: %i, range: [%i, %i]", precision, range[0], range[1]); + MBGL_CHECK_ERROR(glGetShaderPrecisionFormat(GL_FRAGMENT_SHADER, GL_MEDIUM_FLOAT, range, &precision)); + mbgl::Log::Info(mbgl::Event::General, "fragment shader / mediump float, precision: %i, range: [%i, %i]", precision, range[0], range[1]); + MBGL_CHECK_ERROR(glGetShaderPrecisionFormat(GL_FRAGMENT_SHADER, GL_HIGH_FLOAT, range, &precision)); + mbgl::Log::Info(mbgl::Event::General, "fragment shader / highp float, precision: %i, range: [%i, %i]", precision, range[0], range[1]); +#else + mbgl::Log::Info(mbgl::Event::General, "Shader precision information is not available."); +#endif +} + UniqueShader Context::createShader(ShaderType type, const std::string& source) { UniqueShader result { MBGL_CHECK_ERROR(glCreateShader(static_cast<GLenum>(type))), { this } }; diff --git a/src/mbgl/gl/context.hpp b/src/mbgl/gl/context.hpp index 14af299baa..7aa489e03c 100644 --- a/src/mbgl/gl/context.hpp +++ b/src/mbgl/gl/context.hpp @@ -46,6 +46,7 @@ public: void initializeExtensions(const std::function<gl::ProcAddress(const char*)>&); void enableDebugging(); + void logGLDiagnostics(); UniqueShader createShader(ShaderType type, const std::string& source); UniqueProgram createProgram(ShaderID vertexShader, ShaderID fragmentShader); diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp index f7a498ecae..eb5e3c5381 100644 --- a/src/mbgl/renderer/painter.cpp +++ b/src/mbgl/renderer/painter.cpp @@ -96,6 +96,8 @@ Painter::Painter(gl::Context& context_, programs = std::make_unique<Programs>(context, ProgramParameters{ pixelRatio, false, programCacheDir }); + + context.logGLDiagnostics(); #ifndef NDEBUG overdrawPrograms = std::make_unique<Programs>(context, ProgramParameters{ pixelRatio, true, programCacheDir }); |