Limit clear as draw workaround to Adreno 3xx.
authorbsalomon <bsalomon@google.com>
Fri, 13 Feb 2015 17:00:39 +0000 (09:00 -0800)
committerCommit bot <commit-bot@chromium.org>
Fri, 13 Feb 2015 17:00:39 +0000 (09:00 -0800)
This causes more problems than it fixes on the Nexus 6.

Review URL: https://codereview.chromium.org/917313005

src/gpu/gl/GrGLCaps.cpp
src/gpu/gl/GrGLUtil.cpp
src/gpu/gl/GrGLUtil.h

index 8d2cb52..6d8b4ba 100644 (file)
@@ -403,7 +403,7 @@ bool GrGLCaps::init(const GrGLContextInfo& ctxInfo, const GrGLInterface* gli) {
 
     if (kPowerVR54x_GrGLRenderer == ctxInfo.renderer() ||
         kPowerVRRogue_GrGLRenderer == ctxInfo.renderer() ||
-        kQualcomm_GrGLVendor == ctxInfo.vendor()) {
+        kAdreno3xx_GrGLRenderer == ctxInfo.renderer()) {
         fUseDrawInsteadOfClear = true;
     }
 
index 9f7b05a..0a17c19 100644 (file)
@@ -214,6 +214,18 @@ GrGLRenderer GrGLGetRendererFromString(const char* rendererString) {
                          SK_ARRAY_COUNT(kPowerVRRogueStr)-1)) {
             return kPowerVRRogue_GrGLRenderer;
         }
+        int adrenoNumber;
+        n = sscanf(rendererString, "Adreno (TM) %d", &adrenoNumber);
+        if (1 == n) {
+            if (adrenoNumber >= 300) {
+                if (adrenoNumber < 400) {
+                    return kAdreno3xx_GrGLRenderer;
+                }
+                if (adrenoNumber < 500) {
+                    return kAdreno4xx_GrGLRenderer;
+                }
+            }
+        }
     }
     return kOther_GrGLRenderer;
 }
index 570694a..3646de5 100644 (file)
@@ -45,6 +45,8 @@ enum GrGLRenderer {
     kTegra3_GrGLRenderer,
     kPowerVR54x_GrGLRenderer,
     kPowerVRRogue_GrGLRenderer,
+    kAdreno3xx_GrGLRenderer,
+    kAdreno4xx_GrGLRenderer,
     kOther_GrGLRenderer
 };