Rm readPixels from GrSurface & move read/writeSurfacePixels to GrContextPriv (take 3)
This is in service of: https://skia-review.googlesource.com/c/11125/ (Add parallel proxyID to StencilOps & RenderTargetOpList) where I want a better choke point for texture creation to improve discard handling.
This is a re-reland of: https://skia-review.googlesource.com/c/11200/ (Rm readPixels from GrSurface & move read/writeSurfacePixels to GrContextPriv)
Change-Id: Icfb9dd223418dd460405efd2bfd9d1c356beed1a
Reviewed-on: https://skia-review.googlesource.com/11412
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/tests/ImageStorageTest.cpp b/tests/ImageStorageTest.cpp
index 59bb38b..f3e3482 100644
--- a/tests/ImageStorageTest.cpp
+++ b/tests/ImageStorageTest.cpp
@@ -20,9 +20,17 @@
DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageStorageLoad, reporter, ctxInfo) {
class TestFP : public GrFragmentProcessor {
public:
- static sk_sp<GrFragmentProcessor> Make(sk_sp<GrTexture> texture, GrSLMemoryModel mm,
+ static sk_sp<GrFragmentProcessor> Make(GrResourceProvider* resourceProvider,
+ sk_sp<GrTextureProxy> proxy,
+ GrSLMemoryModel mm,
GrSLRestrict restrict) {
- return sk_sp<GrFragmentProcessor>(new TestFP(std::move(texture), mm, restrict));
+ // MDB TODO: remove this once ImageStorageAccess is converted to GrTextureProxy
+ sk_sp<GrTexture> tex(sk_ref_sp(proxy->instantiate(resourceProvider)));
+ if (!tex) {
+ return nullptr;
+ }
+
+ return sk_sp<GrFragmentProcessor>(new TestFP(std::move(tex), mm, restrict));
}
const char* name() const override { return "Image Load Test FP"; }
@@ -127,15 +135,17 @@
continue;
}
desc.fConfig = test.fConfig;
- sk_sp<GrTexture> imageStorageTexture(context->resourceProvider()->createTexture(
- desc, SkBudgeted::kYes, test.fData.get(), 0));
+ sk_sp<GrTextureProxy> imageStorageTexture =
+ GrSurfaceProxy::MakeDeferred(context->resourceProvider(), desc,
+ SkBudgeted::kYes, test.fData.get(), 0);
sk_sp<GrRenderTargetContext> rtContext =
context->makeRenderTargetContext(SkBackingFit::kExact, kS, kS,
kRGBA_8888_GrPixelConfig, nullptr);
GrPaint paint;
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
- paint.addColorFragmentProcessor(TestFP::Make(imageStorageTexture, mm, restrict));
+ paint.addColorFragmentProcessor(TestFP::Make(context->resourceProvider(),
+ imageStorageTexture, mm, restrict));
rtContext->drawPaint(GrNoClip(), std::move(paint), SkMatrix::I());
std::unique_ptr<uint32_t[]> readData(new uint32_t[kS * kS]);
SkImageInfo info = SkImageInfo::Make(kS, kS, kRGBA_8888_SkColorType,