diff options
author | Robert Phillips <robertphillips@google.com> | 2017-02-18 15:15:51 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-02-18 20:55:51 +0000 |
commit | 6f9f7ebb74f49a3b641421fd368d8101e81dd05e (patch) | |
tree | ff4f60366fb41ff6a6569c97c3897ed9bf5ee96b /src/effects/SkTableColorFilter.cpp | |
parent | 7f302c4682f5d6eb9dc61f1fb1d12e1079024f70 (diff) |
Expand use of GrMakeCachedBitmapProxy (take 2)
Reland of https://skia-review.googlesource.com/c/8666/ (Expand use of GrMakeCachedBitmapProxy) with a fix for the non-GPU build
Change-Id: I91d1658139b895b94e04d3f486e56b76bc6d184a
Reviewed-on: https://skia-review.googlesource.com/8700
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/effects/SkTableColorFilter.cpp')
-rw-r--r-- | src/effects/SkTableColorFilter.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/effects/SkTableColorFilter.cpp b/src/effects/SkTableColorFilter.cpp index 8960449eb1..38f1f97a5b 100644 --- a/src/effects/SkTableColorFilter.cpp +++ b/src/effects/SkTableColorFilter.cpp @@ -363,6 +363,7 @@ sk_sp<SkColorFilter> SkTable_ColorFilter::makeComposed(sk_sp<SkColorFilter> inne #include "GrFragmentProcessor.h" #include "GrTextureStripAtlas.h" #include "SkGr.h" +#include "SkGrPriv.h" #include "glsl/GrGLSLFragmentProcessor.h" #include "glsl/GrGLSLFragmentShaderBuilder.h" #include "glsl/GrGLSLProgramDataManager.h" @@ -370,7 +371,9 @@ sk_sp<SkColorFilter> SkTable_ColorFilter::makeComposed(sk_sp<SkColorFilter> inne class ColorTableEffect : public GrFragmentProcessor { public: - static sk_sp<GrFragmentProcessor> Make(GrContext* context, SkBitmap bitmap, unsigned flags); + static sk_sp<GrFragmentProcessor> Make(GrContext* context, + const SkBitmap& bitmap, + unsigned flags); virtual ~ColorTableEffect(); @@ -480,7 +483,7 @@ void GLColorTableEffect::emitCode(EmitArgs& args) { } /////////////////////////////////////////////////////////////////////////////// -sk_sp<GrFragmentProcessor> ColorTableEffect::Make(GrContext* context, SkBitmap bitmap, +sk_sp<GrFragmentProcessor> ColorTableEffect::Make(GrContext* context, const SkBitmap& bitmap, unsigned flags) { GrTextureStripAtlas::Desc desc; @@ -494,12 +497,19 @@ sk_sp<GrFragmentProcessor> ColorTableEffect::Make(GrContext* context, SkBitmap b sk_sp<GrTexture> texture; if (-1 == row) { atlas = nullptr; - texture.reset( - GrRefCachedBitmapTexture(context, bitmap, GrSamplerParams::ClampNoFilter(), nullptr)); + + sk_sp<GrTextureProxy> proxy = GrMakeCachedBitmapProxy(context, bitmap); + if (proxy) { + texture.reset(proxy->instantiate(context->textureProvider())); + } } else { texture.reset(SkRef(atlas->getTexture())); } + if (!texture) { + return nullptr; + } + return sk_sp<GrFragmentProcessor>(new ColorTableEffect(texture.get(), atlas, row, flags)); } |