Reland x3 "Drawing YUVA images does not flatten for bicubic."

Fixes:

Workaround GL_ALPHA texture issue in GM.

Don't crash in GM on null image.

Snap both coords in 1D bicubic (restores old behavior).

This reverts commit 97c98f95962aa6d053bbbd69b97944ea158acb35.

Change-Id: I14bf0f8c6acf87cac0a13b9166fac73a2f3520b0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/278862
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/effects/generated/GrDeviceSpaceEffect.cpp b/src/gpu/effects/generated/GrDeviceSpaceEffect.cpp
index daf7eb9..fbab6e1 100644
--- a/src/gpu/effects/generated/GrDeviceSpaceEffect.cpp
+++ b/src/gpu/effects/generated/GrDeviceSpaceEffect.cpp
@@ -61,11 +61,11 @@
 #if GR_TEST_UTILS
 std::unique_ptr<GrFragmentProcessor> GrDeviceSpaceEffect::TestCreate(GrProcessorTestData* d) {
     std::unique_ptr<GrFragmentProcessor> fp;
-    // We have a restriction that explicit coords only work for FPs with exactly one
+    // We have a restriction that explicit coords only work for FPs with zero or one
     // coord transform.
     do {
         fp = GrProcessorUnitTest::MakeChildFP(d);
-    } while (fp->numCoordTransforms() != 1);
+    } while (fp->numCoordTransforms() > 1);
     return GrDeviceSpaceEffect::Make(std::move(fp));
 }
 #endif