summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-07-20 16:54:10 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-07-20 16:56:31 -0700
commit054c8725b6232f3c5624a521738110724c61c440 (patch)
treec1b4d40af382f1753294980ca1751bfcb1ebb790
parentb43e1ae12328e8a36a9a36c03e49e1db0a395189 (diff)
downloadqtlocation-mapboxgl-upstream/fix-9473.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.cpp14
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>>