Back SkSpecialImage_Gpu with a GrTextureProxy

This is split out of https://codereview.chromium.org/2215323003/ (Start using RenderTargetProxy (omnibus))

The addition of the gpuMemorySize methods is for the SkSpecialImage cache.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4227

Change-Id: Ia9b9d42fb2a0caf61bbfa3ebcc84308c56f541fc
Reviewed-on: https://skia-review.googlesource.com/4227
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/include/private/GrTextureProxy.h b/include/private/GrTextureProxy.h
index 5b4eeef..b85302f 100644
--- a/include/private/GrTextureProxy.h
+++ b/include/private/GrTextureProxy.h
@@ -18,7 +18,8 @@
 public:
     // TODO: need to refine ownership semantics of 'srcData' if we're in completely
     // deferred mode
-    static sk_sp<GrTextureProxy> Make(const GrSurfaceDesc&, SkBackingFit, SkBudgeted,
+    static sk_sp<GrTextureProxy> Make(GrTextureProvider*, const GrSurfaceDesc&,
+                                      SkBackingFit, SkBudgeted,
                                       const void* srcData = nullptr, size_t rowBytes = 0);
     static sk_sp<GrTextureProxy> Make(sk_sp<GrTexture>);
 
@@ -27,7 +28,7 @@
     const GrTextureProxy* asTextureProxy() const override { return this; }
 
     // Actually instantiate the backing texture, if necessary
-    GrTexture* instantiate(GrTextureProvider* texProvider);
+    GrTexture* instantiate(GrTextureProvider*);
 
 private:
     // Deferred version
@@ -36,6 +37,8 @@
     // Wrapped version
     GrTextureProxy(sk_sp<GrTexture> tex);
 
+    size_t onGpuMemorySize() const override;
+
     // For wrapped proxies the GrTexture pointer is stored in GrIORefProxy.
     // For deferred proxies that pointer will be filled n when we need to instantiate
     // the deferred resource