Update GrSurfaceProxy::Copy to return a view.

Additionally this changes updates GrRenderTargetContext drawTexture to take
a view. This was done since there were a bunch of places where the result
of the copy goes straight to the drawTexture call.

Bug: skia:9556
Change-Id: If7094eb51ed343620011d03b86d603e3c6289c17
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/267856
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/image/SkImage_GpuBase.cpp b/src/image/SkImage_GpuBase.cpp
index 6a21b93..61a8fd0 100644
--- a/src/image/SkImage_GpuBase.cpp
+++ b/src/image/SkImage_GpuBase.cpp
@@ -142,26 +142,22 @@
         return nullptr;
     }
 
-    sk_sp<GrSurfaceProxy> proxy = this->asTextureProxyRef(context);
+    const GrSurfaceProxyView& view = this->getSurfaceProxyView(context);
+    SkASSERT(view.proxy());
 
     GrColorType grColorType = SkColorTypeToGrColorType(this->colorType());
 
-    sk_sp<GrTextureProxy> copyProxy =
-            GrSurfaceProxy::Copy(context, proxy.get(), grColorType, GrMipMapped::kNo, subset,
-                                 SkBackingFit::kExact, proxy->isBudgeted());
+    GrSurfaceProxyView copyView =
+            GrSurfaceProxy::Copy(context, view.proxy(), view.origin(), grColorType,
+                                 GrMipMapped::kNo, subset, SkBackingFit::kExact,
+                                 view.proxy()->isBudgeted());
 
-    if (!copyProxy) {
+    if (!copyView.proxy()) {
         return nullptr;
     }
 
-    const GrSurfaceProxyView& currView = this->getSurfaceProxyView(context);
-    if (!currView.proxy()) {
-        return nullptr;
-    }
-
-    GrSurfaceProxyView view(std::move(copyProxy), currView.origin(), currView.swizzle());
     // MDB: this call is okay bc we know 'sContext' was kExact
-    return sk_make_sp<SkImage_Gpu>(fContext, kNeedNewImageUniqueID, std::move(view),
+    return sk_make_sp<SkImage_Gpu>(fContext, kNeedNewImageUniqueID, std::move(copyView),
                                    this->colorType(), this->alphaType(), this->refColorSpace());
 }