Add macro to disable using GrTextureOp for AA in Chrome

Bug: chromium:802408
Bug: chromium:801783
Change-Id: Id5f097b1df08e21e1385efeb8dd8a5e61305a013
Reviewed-on: https://skia-review.googlesource.com/95564
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/SkGpuDevice_drawTexture.cpp b/src/gpu/SkGpuDevice_drawTexture.cpp
index f8e5f74..9e980cd 100644
--- a/src/gpu/SkGpuDevice_drawTexture.cpp
+++ b/src/gpu/SkGpuDevice_drawTexture.cpp
@@ -91,8 +91,14 @@
  * GrRenderTargetContext::drawTextureAffine. It is more effecient than the GrTextureProducer
  * general case.
  */
-static bool can_use_draw_texture_affine(const SkPaint& paint, const SkMatrix& ctm,
+static bool can_use_draw_texture_affine(const SkPaint& paint, GrAA aa, const SkMatrix& ctm,
                                         SkCanvas::SrcRectConstraint constraint) {
+// This is disabled in Chrome until crbug.com/802408 and crbug.com/801783 can be sorted out.
+#ifdef SK_DISABLE_TEXTURE_OP_AA
+    if (GrAA::kYes == aa) {
+        return false;
+    }
+#endif
     return (!paint.getColorFilter() && !paint.getShader() && !paint.getMaskFilter() &&
             !paint.getImageFilter() && paint.getFilterQuality() < kMedium_SkFilterQuality &&
             paint.getBlendMode() == SkBlendMode::kSrcOver && !ctm.hasPerspective() &&
@@ -141,9 +147,10 @@
                                          const SkRect* srcRect, const SkRect* dstRect,
                                          SkCanvas::SrcRectConstraint constraint,
                                          const SkMatrix& viewMatrix, const SkPaint& paint) {
-    if (can_use_draw_texture_affine(paint, this->ctm(), constraint)) {
-        draw_texture_affine(paint, viewMatrix, srcRect, dstRect, GrAA(paint.isAntiAlias()),
-                            std::move(proxy), colorSpace, this->clip(), fRenderTargetContext.get());
+    GrAA aa = GrAA(paint.isAntiAlias());
+    if (can_use_draw_texture_affine(paint, aa, this->ctm(), constraint)) {
+        draw_texture_affine(paint, viewMatrix, srcRect, dstRect, aa, std::move(proxy), colorSpace,
+                            this->clip(), fRenderTargetContext.get());
         return;
     }
     GrTextureAdjuster adjuster(this->context(), std::move(proxy), alphaType, pinnedUniqueID,
@@ -155,7 +162,8 @@
                                    const SkRect* srcRect, const SkRect* dstRect,
                                    SkCanvas::SrcRectConstraint constraint,
                                    const SkMatrix& viewMatrix, const SkPaint& paint) {
-    if (can_use_draw_texture_affine(paint, viewMatrix, constraint)) {
+    GrAA aa = GrAA(paint.isAntiAlias());
+    if (can_use_draw_texture_affine(paint, aa, viewMatrix, constraint)) {
         sk_sp<SkColorSpace> cs;
         // We've done enough checks above to allow us to pass ClampNearest() and not check for
         // scaling adjustments.
@@ -165,8 +173,8 @@
         if (!proxy) {
             return;
         }
-        draw_texture_affine(paint, viewMatrix, srcRect, dstRect, GrAA(paint.isAntiAlias()),
-                            std::move(proxy), cs.get(), this->clip(), fRenderTargetContext.get());
+        draw_texture_affine(paint, viewMatrix, srcRect, dstRect, aa, std::move(proxy), cs.get(),
+                            this->clip(), fRenderTargetContext.get());
         return;
     }
     this->drawTextureProducer(maker, srcRect, dstRect, constraint, viewMatrix, paint);