Consistently fail readPixels when rowbytes not a multiple of bpp

Previously this would report success but may have rounded the
rowbytes down to a multiple of bpp prior to writing the dst.
On GPU it could trigger an assert in a debug build.

Bug: chromium:1163061
Change-Id: I19709f4cdb71139732998a4dd2e14476099f0ba8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/363782
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Reed <reed@google.com>
diff --git a/src/shaders/gradients/SkGradientShader.cpp b/src/shaders/gradients/SkGradientShader.cpp
index 6e2fbe5..dce7230 100644
--- a/src/shaders/gradients/SkGradientShader.cpp
+++ b/src/shaders/gradients/SkGradientShader.cpp
@@ -473,8 +473,8 @@
     }
 
     std::vector<float> rgba(4*fColorCount);  // TODO: SkSTArray?
-    SkConvertPixels(dst,   rgba.data(), dst.minRowBytes(),
-                    src, fOrigColors4f, src.minRowBytes());
+    SkAssertResult(SkConvertPixels(dst,   rgba.data(), dst.minRowBytes(),
+                                   src, fOrigColors4f, src.minRowBytes()));
 
     // Transform our colors into a scale factor f and bias b such that for
     // any t between stops i and i+1, the color we want is mad(t, f[i], b[i]).
@@ -637,8 +637,10 @@
 
         auto info = SkImageInfo::Make(colorCount,1, kRGBA_F32_SkColorType, kUnpremul_SkAlphaType);
 
-        SkConvertPixels(info.makeColorSpace(sk_ref_sp(dst)), fStorage.begin(), info.minRowBytes(),
-                        info.makeColorSpace(sk_ref_sp(src)), fColors         , info.minRowBytes());
+        auto dstInfo = info.makeColorSpace(sk_ref_sp(dst));
+        auto srcInfo = info.makeColorSpace(sk_ref_sp(src));
+        SkAssertResult(SkConvertPixels(dstInfo, fStorage.begin(), info.minRowBytes(),
+                                       srcInfo, fColors         , info.minRowBytes()));
 
         fColors = fStorage.begin();
     }