aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/SkTableColorFilter.cpp
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2017-02-18 15:15:51 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-18 20:55:51 +0000
commit6f9f7ebb74f49a3b641421fd368d8101e81dd05e (patch)
treeff4f60366fb41ff6a6569c97c3897ed9bf5ee96b /src/effects/SkTableColorFilter.cpp
parent7f302c4682f5d6eb9dc61f1fb1d12e1079024f70 (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.cpp18
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));
}