Bug 1248183 - Block accelerated canvas2d on Vivante GC1000 GPUs; r?snorp draft
authorJamie Nicol <jnicol@mozilla.com>
Mon, 25 Apr 2016 14:49:29 +0200
changeset 356003 160a76c87f1f1ef070d6a0e07083c5a0efd316e0
parent 355956 1c6385ae1fe7e37d8f23f958ce14582f07af729e
child 519312 3ab2e3b7b3a6adf70bc541b3e7004a572ac8f938
push id16415
push userbmo:jnicol@mozilla.com
push dateMon, 25 Apr 2016 13:02:48 +0000
reviewerssnorp
bugs1248183
milestone48.0a1
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)
       {