aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/image_pict.cpp
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2017-03-21 16:22:00 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-22 11:52:16 +0000
commit0ae6faa34d73ffc7ebec3d13f0473703bade821b (patch)
treed54d076330e9da961cd198732aca245ee7b4a646 /gm/image_pict.cpp
parent54d212e1bfaea0be88c3c40820d0b1ae0daebecf (diff)
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 <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'gm/image_pict.cpp')
-rw-r--r--gm/image_pict.cpp9
1 files changed, 7 insertions, 2 deletions
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<SkColorSpace> texColorSpace;
+ // MDB TODO: this should be lockAsTextureRef
sk_sp<GrTexture> 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<GrTextureProxy> proxy = GrSurfaceProxy::MakeWrapped(std::move(texture));
+
// No API to draw a GrTexture directly, so we cheat and create a private image subclass
- sk_sp<SkImage> image(new SkImage_Gpu(cache->uniqueID(), kPremul_SkAlphaType,
- std::move(texture), std::move(texColorSpace),
+ sk_sp<SkImage> 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