Push GrTextureProxy down to more effects

Change-Id: Ie3f32a88f25af082c25bc6daf3fe24e303e80f9e
Reviewed-on: https://skia-review.googlesource.com/7616
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/effects/GrTextureDomain.h b/src/gpu/effects/GrTextureDomain.h
index 6758d90..fbc20f1 100644
--- a/src/gpu/effects/GrTextureDomain.h
+++ b/src/gpu/effects/GrTextureDomain.h
@@ -44,7 +44,8 @@
     static const int kModeCount = kLastMode + 1;
 
     static const GrTextureDomain& IgnoredDomain() {
-        static const GrTextureDomain gDomain(nullptr, SkRect::MakeEmpty(), kIgnore_Mode);
+        static const GrTextureDomain gDomain((GrTextureProxy*)nullptr,
+                                             SkRect::MakeEmpty(), kIgnore_Mode);
         return gDomain;
     }
 
@@ -54,6 +55,8 @@
      */
     GrTextureDomain(GrTexture*, const SkRect& domain, Mode, int index = -1);
 
+    GrTextureDomain(GrTextureProxy*, const SkRect& domain, Mode, int index = -1);
+
     const SkRect& domain() const { return fDomain; }
     Mode mode() const { return fMode; }
 
@@ -157,6 +160,14 @@
                                            GrTextureDomain::Mode,
                                            GrSamplerParams::FilterMode filterMode);
 
+    static sk_sp<GrFragmentProcessor> Make(GrContext*,
+                                           sk_sp<GrTextureProxy>,
+                                           sk_sp<GrColorSpaceXform>,
+                                           const SkMatrix&,
+                                           const SkRect& domain,
+                                           GrTextureDomain::Mode,
+                                           GrSamplerParams::FilterMode filterMode);
+
     const char* name() const override { return "TextureDomain"; }
 
     SkString dumpInfo() const override {
@@ -178,7 +189,15 @@
                           GrTextureDomain::Mode,
                           GrSamplerParams::FilterMode);
 
-    static OptimizationFlags OptFlags(GrTexture* texture, GrTextureDomain::Mode mode);
+    GrTextureDomainEffect(GrContext*,
+                          sk_sp<GrTextureProxy>,
+                          sk_sp<GrColorSpaceXform>,
+                          const SkMatrix&,
+                          const SkRect& domain,
+                          GrTextureDomain::Mode,
+                          GrSamplerParams::FilterMode);
+
+    static OptimizationFlags OptFlags(GrPixelConfig config, GrTextureDomain::Mode mode);
 
     GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
 
@@ -198,6 +217,9 @@
     static sk_sp<GrFragmentProcessor> Make(GrTexture*, const SkIRect& subset,
                                            const SkIPoint& deviceSpaceOffset);
 
+    static sk_sp<GrFragmentProcessor> Make(GrContext*, sk_sp<GrTextureProxy>, const SkIRect& subset,
+                                           const SkIPoint& deviceSpaceOffset);
+
     const char* name() const override { return "GrDeviceSpaceTextureDecalFragmentProcessor"; }
 
     SkString dumpInfo() const override {
@@ -217,6 +239,9 @@
 
     GrDeviceSpaceTextureDecalFragmentProcessor(GrTexture*, const SkIRect&, const SkIPoint&);
 
+    GrDeviceSpaceTextureDecalFragmentProcessor(GrContext*, sk_sp<GrTextureProxy>,
+                                               const SkIRect&, const SkIPoint&);
+
     GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
 
     // Since we always use decal mode, there is no need for key data.