Use TextureProxy size directly in GrYUVToRGBEffect FragmentProcessor

Instead of take extra input to indicate size for texture proxies of
different planes, directly use texture proxy's size.

Bug: skia:7903
Change-Id: I5d6c859510f7390948c6dcfbdd17343faa786aca
Reviewed-on: https://skia-review.googlesource.com/130964
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Weiliang Chen <weiliangc@chromium.org>
diff --git a/gm/yuvtorgbeffect.cpp b/gm/yuvtorgbeffect.cpp
index a730255..09bbd56 100644
--- a/gm/yuvtorgbeffect.cpp
+++ b/gm/yuvtorgbeffect.cpp
@@ -101,7 +101,6 @@
         constexpr SkScalar kDrawPad = 10.f;
         constexpr SkScalar kTestPad = 10.f;
         constexpr SkScalar kColorSpaceOffset = 36.f;
-        SkISize sizes[3] = {{YSIZE, YSIZE}, {USIZE, USIZE}, {VSIZE, VSIZE}};
 
         for (int space = kJPEG_SkYUVColorSpace; space <= kLastEnum_SkYUVColorSpace; ++space) {
             SkRect renderRect = SkRect::MakeWH(SkIntToScalar(fBmp[0].width()),
@@ -119,7 +118,6 @@
                         GrYUVtoRGBEffect::Make(proxy[indices[i][0]],
                                                proxy[indices[i][1]],
                                                proxy[indices[i][2]],
-                                               sizes,
                                                static_cast<SkYUVColorSpace>(space),
                                                false));
                 if (fp) {
@@ -227,7 +225,6 @@
         constexpr SkScalar kDrawPad = 10.f;
         constexpr SkScalar kTestPad = 10.f;
         constexpr SkScalar kColorSpaceOffset = 36.f;
-        SkISize sizes[3] = {{YSIZE, YSIZE}, {USIZE, USIZE}, {VSIZE, VSIZE}};
 
         for (int space = kJPEG_SkYUVColorSpace; space <= kLastEnum_SkYUVColorSpace; ++space) {
             SkRect renderRect =
@@ -239,7 +236,7 @@
 
             GrPaint grPaint;
             grPaint.setXPFactory(GrPorterDuffXPFactory::Get(SkBlendMode::kSrc));
-            auto fp = GrYUVtoRGBEffect::Make(proxy[0], proxy[1], proxy[2], sizes,
+            auto fp = GrYUVtoRGBEffect::Make(proxy[0], proxy[1], proxy[2],
                                              static_cast<SkYUVColorSpace>(space), true);
             if (fp) {
                 SkMatrix viewMatrix;
diff --git a/src/gpu/GrYUVProvider.cpp b/src/gpu/GrYUVProvider.cpp
index 8ffc491..3c6c7f7 100644
--- a/src/gpu/GrYUVProvider.cpp
+++ b/src/gpu/GrYUVProvider.cpp
@@ -124,7 +124,7 @@
             GrYUVtoRGBEffect::Make(std::move(yuvTextureProxies[0]),
                                    std::move(yuvTextureProxies[1]),
                                    std::move(yuvTextureProxies[2]),
-                                   yuvInfo.fSizeInfo.fSizes, yuvInfo.fColorSpace, false);
+                                   yuvInfo.fColorSpace, false);
     paint.addColorFragmentProcessor(std::move(yuvToRgbProcessor));
 
     // If the caller expects the pixels in a different color space than the one from the image,
diff --git a/src/gpu/effects/GrYUVtoRGBEffect.cpp b/src/gpu/effects/GrYUVtoRGBEffect.cpp
index 814b69a..55e7902 100644
--- a/src/gpu/effects/GrYUVtoRGBEffect.cpp
+++ b/src/gpu/effects/GrYUVtoRGBEffect.cpp
@@ -27,22 +27,21 @@
                                                                     uProxy,
                                                             sk_sp<GrTextureProxy>
                                                                     vProxy,
-                                                            const SkISize sizes[3],
                                                             SkYUVColorSpace colorSpace,
                                                             bool nv12) {
     SkScalar w[3], h[3];
-    w[0] = SkIntToScalar(sizes[0].fWidth);
-    h[0] = SkIntToScalar(sizes[0].fHeight);
-    w[1] = SkIntToScalar(sizes[1].fWidth);
-    h[1] = SkIntToScalar(sizes[1].fHeight);
-    w[2] = SkIntToScalar(sizes[2].fWidth);
-    h[2] = SkIntToScalar(sizes[2].fHeight);
+    w[0] = SkIntToScalar(yProxy->width());
+    h[0] = SkIntToScalar(yProxy->height());
+    w[1] = SkIntToScalar(uProxy->width());
+    h[1] = SkIntToScalar(uProxy->height());
+    w[2] = SkIntToScalar(vProxy->width());
+    h[2] = SkIntToScalar(vProxy->height());
     SkMatrix yTransform = SkMatrix::I();
     SkMatrix uTransform = SkMatrix::MakeScale(w[1] / w[0], h[1] / h[0]);
     SkMatrix vTransform = SkMatrix::MakeScale(w[2] / w[0], h[2] / h[0]);
     GrSamplerState::Filter uvFilterMode =
-            ((sizes[1].fWidth != sizes[0].fWidth) || (sizes[1].fHeight != sizes[0].fHeight) ||
-             (sizes[2].fWidth != sizes[0].fWidth) || (sizes[2].fHeight != sizes[0].fHeight))
+            ((uProxy->width() != yProxy->width()) || (uProxy->height() != yProxy->height()) ||
+             (vProxy->width() != yProxy->width()) || (vProxy->height() != yProxy->height()))
                     ? GrSamplerState::Filter::kBilerp
                     : GrSamplerState::Filter::kNearest;
     SkMatrix44 mat(SkMatrix44::kUninitialized_Constructor);
diff --git a/src/gpu/effects/GrYUVtoRGBEffect.fp b/src/gpu/effects/GrYUVtoRGBEffect.fp
index 9b08fbd..e49feda 100644
--- a/src/gpu/effects/GrYUVtoRGBEffect.fp
+++ b/src/gpu/effects/GrYUVtoRGBEffect.fp
@@ -40,7 +40,6 @@
     static std::unique_ptr<GrFragmentProcessor> Make(sk_sp<GrTextureProxy> yProxy,
                                                      sk_sp<GrTextureProxy> uProxy,
                                                      sk_sp<GrTextureProxy> vProxy,
-                                                     const SkISize sizes[3],
                                                      SkYUVColorSpace colorSpace, bool nv12);
 }
 
@@ -69,24 +68,23 @@
     std::unique_ptr<GrFragmentProcessor> GrYUVtoRGBEffect::Make(sk_sp<GrTextureProxy> yProxy,
                                                                 sk_sp<GrTextureProxy> uProxy,
                                                                 sk_sp<GrTextureProxy> vProxy,
-                                                                const SkISize sizes[3],
                                                                 SkYUVColorSpace colorSpace,
                                                                 bool nv12) {
         SkScalar w[3], h[3];
-        w[0] = SkIntToScalar(sizes[0].fWidth);
-        h[0] = SkIntToScalar(sizes[0].fHeight);
-        w[1] = SkIntToScalar(sizes[1].fWidth);
-        h[1] = SkIntToScalar(sizes[1].fHeight);
-        w[2] = SkIntToScalar(sizes[2].fWidth);
-        h[2] = SkIntToScalar(sizes[2].fHeight);
+        w[0] = SkIntToScalar(yProxy->width());
+        h[0] = SkIntToScalar(yProxy->height());
+        w[1] = SkIntToScalar(uProxy->width());
+        h[1] = SkIntToScalar(uProxy->height());
+        w[2] = SkIntToScalar(vProxy->width());
+        h[2] = SkIntToScalar(vProxy->height());
         SkMatrix yTransform = SkMatrix::I();
         SkMatrix uTransform = SkMatrix::MakeScale(w[1] / w[0], h[1] / h[0]);
         SkMatrix vTransform = SkMatrix::MakeScale(w[2] / w[0], h[2] / h[0]);
         GrSamplerState::Filter uvFilterMode =
-            ((sizes[1].fWidth  != sizes[0].fWidth) ||
-             (sizes[1].fHeight != sizes[0].fHeight) ||
-             (sizes[2].fWidth  != sizes[0].fWidth) ||
-             (sizes[2].fHeight != sizes[0].fHeight)) ?
+            ((uProxy->width()  != yProxy->width()) ||
+             (uProxy->height() != yProxy->height()) ||
+             (vProxy->width()  != yProxy->width()) ||
+             (vProxy->height() != yProxy->height())) ?
             GrSamplerState::Filter::kBilerp :
             GrSamplerState::Filter::kNearest;
         SkMatrix44 mat(SkMatrix44::kUninitialized_Constructor);
diff --git a/src/gpu/effects/GrYUVtoRGBEffect.h b/src/gpu/effects/GrYUVtoRGBEffect.h
index 7008fbe..3d44285 100644
--- a/src/gpu/effects/GrYUVtoRGBEffect.h
+++ b/src/gpu/effects/GrYUVtoRGBEffect.h
@@ -18,7 +18,6 @@
     static std::unique_ptr<GrFragmentProcessor> Make(sk_sp<GrTextureProxy> yProxy,
                                                      sk_sp<GrTextureProxy> uProxy,
                                                      sk_sp<GrTextureProxy> vProxy,
-                                                     const SkISize sizes[3],
                                                      SkYUVColorSpace colorSpace, bool nv12);
     SkMatrix44 ySamplerTransform() const { return fYSamplerTransform; }
     SkMatrix44 uSamplerTransform() const { return fUSamplerTransform; }
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp
index 7b24858..359782f7 100644
--- a/src/image/SkImage_Gpu.cpp
+++ b/src/image/SkImage_Gpu.cpp
@@ -439,14 +439,10 @@
 
     GrPaint paint;
     paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
-    // TODO: Move the sizes into GrYUVtoRGBEffect since this can just be done there.
-    SkISize sizes[] = {{yProxy->width(), yProxy->height()},
-                       {uProxy->width(), uProxy->height()},
-                       {vProxy->width(), vProxy->height()}};
     // TODO: Modify the fragment processor to sample from different channel instead of taking nv12
     // bool.
     paint.addColorFragmentProcessor(
-            GrYUVtoRGBEffect::Make(yProxy, uProxy, vProxy, sizes, colorSpace, nv12));
+            GrYUVtoRGBEffect::Make(yProxy, uProxy, vProxy, colorSpace, nv12));
 
     const SkRect rect = SkRect::MakeIWH(width, height);