| Index: src/gpu/effects/GrRRectEffect.cpp
 | 
| diff --git a/src/gpu/effects/GrRRectEffect.cpp b/src/gpu/effects/GrRRectEffect.cpp
 | 
| index c95690ff195e0f1c944e596448658ceb36578d5a..dcc8944a23b5b16dfbd9c790bb02814fb021c42d 100644
 | 
| --- a/src/gpu/effects/GrRRectEffect.cpp
 | 
| +++ b/src/gpu/effects/GrRRectEffect.cpp
 | 
| @@ -509,16 +509,18 @@ void GLEllipticalRRectEffect::emitCode(EmitArgs& args) {
 | 
|      // fragments near the other three edges will get the correct AA. Fragments in the interior of
 | 
|      // the rrect will have a (0,0) vector at all four corners. So long as the radii > 0.5 they will
 | 
|      // correctly produce an alpha value of 1 at all four corners. We take the min of all the alphas.
 | 
| +    //
 | 
|      // The code below is a simplified version of the above that performs maxs on the vector
 | 
|      // components before computing distances and alpha values so that only one distance computation
 | 
|      // need be computed to determine the min alpha.
 | 
|      fsBuilder->codeAppendf("\t\tvec2 dxy0 = %s.xy - %s.xy;\n", rectName, fragmentPos);
 | 
|      fsBuilder->codeAppendf("\t\tvec2 dxy1 = %s.xy - %s.zw;\n", fragmentPos, rectName);
 | 
| +    // The uniforms with the inv squared radii are highp to prevent underflow.
 | 
|      switch (erre.getRRect().getType()) {
 | 
|          case SkRRect::kSimple_Type: {
 | 
|              const char *invRadiiXYSqdName;
 | 
|              fInvRadiiSqdUniform = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
 | 
| -                                                      kVec2f_GrSLType, kDefault_GrSLPrecision,
 | 
| +                                                      kVec2f_GrSLType, kHigh_GrSLPrecision,
 | 
|                                                        "invRadiiXY",
 | 
|                                                        &invRadiiXYSqdName);
 | 
|              fsBuilder->codeAppend("\t\tvec2 dxy = max(max(dxy0, dxy1), 0.0);\n");
 | 
| @@ -529,7 +531,7 @@ void GLEllipticalRRectEffect::emitCode(EmitArgs& args) {
 | 
|          case SkRRect::kNinePatch_Type: {
 | 
|              const char *invRadiiLTRBSqdName;
 | 
|              fInvRadiiSqdUniform = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
 | 
| -                                                      kVec4f_GrSLType, kDefault_GrSLPrecision,
 | 
| +                                                      kVec4f_GrSLType, kHigh_GrSLPrecision,
 | 
|                                                        "invRadiiLTRB",
 | 
|                                                        &invRadiiLTRBSqdName);
 | 
|              fsBuilder->codeAppend("\t\tvec2 dxy = max(max(dxy0, dxy1), 0.0);\n");
 | 
| 
 |