Skip flush in GrDrawingManager if the specifed proxy doesn't have any work (take 2)

This is rather ham-fisted but I would like to have a short-term fix for the "always-flush" perf regressions.

Change-Id: I508e2d725ac18f50318baf31bc3243fe932c724b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206697
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrProxyProvider.cpp b/src/gpu/GrProxyProvider.cpp
index f33755d..d2c47ac 100644
--- a/src/gpu/GrProxyProvider.cpp
+++ b/src/gpu/GrProxyProvider.cpp
@@ -130,9 +130,10 @@
     sk_sp<GrTexture> tex;
 
     if (SkBackingFit::kApprox == fit) {
-        tex = resourceProvider->createApproxTexture(desc, GrResourceProvider::Flags::kNone);
+        tex = resourceProvider->createApproxTexture(desc, GrResourceProvider::Flags::kNoPendingIO);
     } else {
-        tex = resourceProvider->createTexture(desc, budgeted, GrResourceProvider::Flags::kNone);
+        tex = resourceProvider->createTexture(desc, budgeted,
+                                              GrResourceProvider::Flags::kNoPendingIO);
     }
     if (!tex) {
         return nullptr;
@@ -244,6 +245,9 @@
             surfaceFlags |= GrInternalSurfaceFlags::kMixedSampled;
         }
     }
+    if (fImageContext->priv().explicitlyAllocateGPUResources()) {
+        surfaceFlags |= GrInternalSurfaceFlags::kNoPendingIO;
+    }
 
     GrSurfaceDesc desc;
     desc.fWidth = srcImage->width();