diff options
author | Antonio Zugaldia <antonio@mapbox.com> | 2017-07-27 09:20:40 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-27 09:20:40 -0400 |
commit | fa0b307680aa47537e04f48134c8a38c2cb7e17c (patch) | |
tree | 5706ce4c14827ef2e8f748578b826628ba331a55 | |
parent | 82c2d4b3ca76c6b73564cd96d93ebd39969eb820 (diff) | |
download | qtlocation-mapboxgl-fa0b307680aa47537e04f48134c8a38c2cb7e17c.tar.gz |
[android] Disable program caching on Adreno 3xx, 4xx, and 5xx GPUs due to known bugs (#9625)
-rw-r--r-- | src/mbgl/gl/context.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/mbgl/gl/context.cpp b/src/mbgl/gl/context.cpp index e5609db7b8..a530528da1 100644 --- a/src/mbgl/gl/context.cpp +++ b/src/mbgl/gl/context.cpp @@ -203,7 +203,21 @@ bool Context::supportsVertexArrays() const { #if MBGL_HAS_BINARY_PROGRAMS bool Context::supportsProgramBinaries() const { - return programBinary && programBinary->programBinary && programBinary->getProgramBinary; + if (!programBinary || !programBinary->programBinary || !programBinary->getProgramBinary) { + return false; + } + + // Blacklist Adreno 3xx, 4xx, and 5xx GPUs due to known bugs: + // https://bugs.chromium.org/p/chromium/issues/detail?id=510637 + // https://chromium.googlesource.com/chromium/src/gpu/+/master/config/gpu_driver_bug_list.json#2316 + const std::string renderer = reinterpret_cast<const char*>(glGetString(GL_RENDERER)); + if (renderer.find("Adreno (TM) 3") != std::string::npos + || renderer.find("Adreno (TM) 4") != std::string::npos + || renderer.find("Adreno (TM) 5") != std::string::npos) { + return false; + } + + return true; } optional<std::pair<BinaryProgramFormat, std::string>> |