diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-07-20 16:54:10 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-07-20 16:56:31 -0700 |
commit | 054c8725b6232f3c5624a521738110724c61c440 (patch) | |
tree | c1b4d40af382f1753294980ca1751bfcb1ebb790 | |
parent | b43e1ae12328e8a36a9a36c03e49e1db0a395189 (diff) | |
download | qtlocation-mapboxgl-054c8725b6232f3c5624a521738110724c61c440.tar.gz |
[android] Disable program caching on Adreno 3xx, 4xx, and 5xx GPUs due to known bugsupstream/fix-9473
-rw-r--r-- | src/mbgl/gl/context.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mbgl/gl/context.cpp b/src/mbgl/gl/context.cpp index 35683cff89..4ed089e615 100644 --- a/src/mbgl/gl/context.cpp +++ b/src/mbgl/gl/context.cpp @@ -255,7 +255,19 @@ 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 + 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>> |