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();