From 0ae6faa34d73ffc7ebec3d13f0473703bade821b Mon Sep 17 00:00:00 2001 From: Robert Phillips Date: Tue, 21 Mar 2017 16:22:00 -0400 Subject: Make SkImage_Gpu be deferred (take 2) This CL removes the GrTexture-based ctor forcing everyone to create deferred SkImage_Gpus. relanding of: https://skia-review.googlesource.com/c/6680/ (Make SkImage_Gpu be deferred) split out into: https://skia-review.googlesource.com/c/9106/ (Remove atlas creation from GrResourceProvider) Change-Id: I834ede430b9706cf9b675bdfdddf1c8c624c2f14 Reviewed-on: https://skia-review.googlesource.com/9965 Reviewed-by: Brian Salomon Commit-Queue: Robert Phillips --- gm/image_pict.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'gm/image_pict.cpp') diff --git a/gm/image_pict.cpp b/gm/image_pict.cpp index a6e0bdfcdd..883fd34725 100644 --- a/gm/image_pict.cpp +++ b/gm/image_pict.cpp @@ -344,6 +344,7 @@ protected: static void draw_as_tex(SkCanvas* canvas, SkImageCacherator* cache, SkScalar x, SkScalar y) { #if SK_SUPPORT_GPU sk_sp texColorSpace; + // MDB TODO: this should be lockAsTextureRef sk_sp texture( cache->lockAsTexture(canvas->getGrContext(), GrSamplerParams::ClampBilerp(), canvas->imageInfo().colorSpace(), &texColorSpace, @@ -359,9 +360,13 @@ protected: canvas->drawLine(r.left(), r.bottom(), r.right(), r.top(), paint); return; } + + sk_sp proxy = GrSurfaceProxy::MakeWrapped(std::move(texture)); + // No API to draw a GrTexture directly, so we cheat and create a private image subclass - sk_sp image(new SkImage_Gpu(cache->uniqueID(), kPremul_SkAlphaType, - std::move(texture), std::move(texColorSpace), + sk_sp image(new SkImage_Gpu(canvas->getGrContext(), + cache->uniqueID(), kPremul_SkAlphaType, + std::move(proxy), std::move(texColorSpace), SkBudgeted::kNo)); canvas->drawImage(image.get(), x, y); #endif -- cgit v1.2.3