| Index: src/gpu/gl/GrGLCaps.cpp | 
| diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp | 
| index a60230a2fe91de7e744a27a002cac988e6b3f912..47f3f0f0c819d6fd97312bd4cb424ebe42369d92 100644 | 
| --- a/src/gpu/gl/GrGLCaps.cpp | 
| +++ b/src/gpu/gl/GrGLCaps.cpp | 
| @@ -47,6 +47,7 @@ void GrGLCaps::reset() { | 
| fFixedFunctionSupport = false; | 
| fDiscardFBSupport = false; | 
| fFullClearIsFree = false; | 
| +    fDropsTileOnZeroDivide = false; | 
| } | 
|  | 
| GrGLCaps::GrGLCaps(const GrGLCaps& caps) : GrDrawTargetCaps() { | 
| @@ -84,6 +85,7 @@ GrGLCaps& GrGLCaps::operator = (const GrGLCaps& caps) { | 
| fFixedFunctionSupport = caps.fFixedFunctionSupport; | 
| fDiscardFBSupport = caps.fDiscardFBSupport; | 
| fFullClearIsFree = caps.fFullClearIsFree; | 
| +    fDropsTileOnZeroDivide = caps.fDropsTileOnZeroDivide; | 
|  | 
| return *this; | 
| } | 
| @@ -244,6 +246,9 @@ void GrGLCaps::init(const GrGLContextInfo& ctxInfo, const GrGLInterface* gli) { | 
| } | 
| } | 
|  | 
| +    // Adreno GPUs have a tendency to drop tiles when there is a divide-by-zero in a shader | 
| +    fDropsTileOnZeroDivide = kQualcomm_GrGLVendor == ctxInfo.vendor(); | 
| + | 
| this->initFSAASupport(ctxInfo, gli); | 
| this->initStencilFormats(ctxInfo); | 
|  | 
| @@ -661,5 +666,6 @@ SkString GrGLCaps::dump() const { | 
| (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); | 
| r.appendf("Discard FrameBuffer support: %s\n", (fDiscardFBSupport ? "YES" : "NO")); | 
| r.appendf("Full screen clear is free: %s\n", (fFullClearIsFree ? "YES" : "NO")); | 
| +    r.appendf("Drops tile on zero divide: %s\n", (fDropsTileOnZeroDivide ? "YES" : "NO")); | 
| return r; | 
| } | 
|  |