Add GrTextureRenderTargetProxy and support switching between RT & Tex Proxies

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

Change-Id: Ie7662299953592f564bb27a4df4ea101f743403e
Reviewed-on: https://skia-review.googlesource.com/4427
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/tests/ProxyTest.cpp b/tests/ProxyTest.cpp
index 6b7ab25..270f787 100644
--- a/tests/ProxyTest.cpp
+++ b/tests/ProxyTest.cpp
@@ -40,9 +40,6 @@
                                SkBackingFit fit) {
     REPORTER_ASSERT(reporter, rtProxy->numStencilSamples() == numSamples);
 
-    REPORTER_ASSERT(reporter, rtProxy->asTextureProxy() == nullptr); // for now
-    REPORTER_ASSERT(reporter, rtProxy->asRenderTargetProxy() == rtProxy);
-
     GrRenderTarget* rt = rtProxy->instantiate(provider);
     REPORTER_ASSERT(reporter, rt);
 
@@ -69,9 +66,6 @@
                           GrTextureProvider* provider,
                           GrTextureProxy* texProxy,
                           SkBackingFit fit) {
-    REPORTER_ASSERT(reporter, texProxy->asTextureProxy() == texProxy);
-    REPORTER_ASSERT(reporter, texProxy->asRenderTargetProxy() == nullptr); // for now
-
     GrTexture* tex = texProxy->instantiate(provider);
     REPORTER_ASSERT(reporter, tex);
 
@@ -102,6 +96,7 @@
                                   numSamples <= ctxInfo.grContext()->caps()->maxColorSampleCount();
 
                             GrSurfaceDesc desc;
+                            desc.fFlags = kRenderTarget_GrSurfaceFlag;
                             desc.fOrigin = origin;
                             desc.fWidth = widthHeight;
                             desc.fHeight = widthHeight;
@@ -119,9 +114,10 @@
                                                    numSamples, fit);
                             }
 
+                            desc.fFlags = kNone_GrSurfaceFlags;
                             desc.fSampleCnt = 0;
 
-                            sk_sp<GrTextureProxy> texProxy(GrTextureProxy::Make(provider,
+                            sk_sp<GrTextureProxy> texProxy(GrTextureProxy::Make(caps, provider,
                                                                                 desc,
                                                                                 fit,
                                                                                 budgeted));