Bug 1248183 - Block accelerated canvas2d on Vivante GC1000 GPUs; r=snorp
authorJamie Nicol <jnicol@mozilla.com>
Mon, 25 Apr 2016 14:49:29 +0200
changeset 294906 fb7111ef84f70cfba9ad445fd9fa492780401a31
parent 294905 412f3942777e3f876773da8a6c1eb2522dc1f381
child 294907 098bf703f8ba54cd7f5525ffbd290c82fbf909dc
push id30214
push userkwierso@gmail.com
push dateTue, 26 Apr 2016 21:17:19 +0000
treeherdermozilla-central@6a441b2b2997 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssnorp
bugs1248183
milestone49.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1248183 - Block accelerated canvas2d on Vivante GC1000 GPUs; r=snorp
widget/android/GfxInfo.cpp
--- a/widget/android/GfxInfo.cpp
+++ b/widget/android/GfxInfo.cpp
@@ -408,22 +408,26 @@ GfxInfo::GetFeatureStatusImpl(int32_t aF
   if (mGLStrings->Vendor().IsEmpty() || mGLStrings->Renderer().IsEmpty()) {
     *aStatus = nsIGfxInfo::FEATURE_BLOCKED_DEVICE;
     return NS_OK;
   }
 
   // Don't evaluate special cases when evaluating the downloaded blocklist.
   if (aDriverInfo.IsEmpty()) {
     if (aFeature == nsIGfxInfo::FEATURE_CANVAS2D_ACCELERATION) {
-      // It's slower than software due to not having a compositing fast path
-      if (mSDKVersion >= 11) {
-        *aStatus = nsIGfxInfo::FEATURE_STATUS_OK;
-      } else {
+      if (mSDKVersion < 11) {
+        // It's slower than software due to not having a compositing fast path
         *aStatus = nsIGfxInfo::FEATURE_BLOCKED_OS_VERSION;
         aFailureId = "FEATURE_FAILURE_CANVAS_2D_SDK";
+      } else if (mGLStrings->Renderer().Find("Vivante GC1000") != -1) {
+        // Blocklist Vivante GC1000. See bug 1248183.
+        *aStatus = nsIGfxInfo::FEATURE_BLOCKED_DEVICE;
+        aFailureId = "FEATURE_FAILED_CANVAS_2D_HW";
+      } else {
+        *aStatus = nsIGfxInfo::FEATURE_STATUS_OK;
       }
       return NS_OK;
     }
 
     if (aFeature == FEATURE_WEBGL_OPENGL) {
       if (mGLStrings->Renderer().Find("Adreno 200") != -1 ||
           mGLStrings->Renderer().Find("Adreno 205") != -1)
       {